使用mybatis的dao层的开发方式有两种,一种是类似与ssh框架,定义接口,然后定义实现类,还有一种方式就是动态代理方式,即只需要定义接口和方法就可以动态地去执行sql语句。
1、在com.iteason.mapper目录下创建UserMapper接口,用于定义所有的行为
public interface UserMapper {
//遵循四个原则
//接口方法名即为User.xml中的id名
//返回值类型和User.xml中的类型要一致
//方法的参数类型要和User.xml中的类型一致
//接口与相应的User.xml的命名空间绑定
//通过id查
public User findUserById(Integer id);
//通过用户名模糊查
public List<User> findByUsername(String username);
//插入User
public void insertUser(User user);
//更新User
public void updateUser(Integer id);
//通过id删除User
public void deleteUser(Integer id);
}
2、在com.iteason.mapper目录下创建UserMapper.xml配置文件,用于映射UserMapper接口和User类
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.iteason.mapper.UserMapper">
<!-- 通过id查询 -->
<select id="findUserById" parameterType="Integer" resultType="User">
select * from user where id = #{id}
</select>
<!-- 通过uesrname模糊查询 -->
<select id="findUserByUsername" parameterType="String" resultType="User">
select * from user where username like #{username}
</select>
<!-- 插入 -->
<insert id="insertUser" parameterType="User" >
<selectKey order="AFTER" keyProperty="id" resultType="Integer">
select LAST_INSERT_ID()
</selectKey>
insert into user(username,birthday,address,sex) values(#{username},#{birthday},#{address},#{sex});
</insert>
<!-- 更新 -->
<update id="updateUser" parameterType="Integer">
update user set username = "hahaha" where id = #{id}
</update>
<!-- 删除 -->
<delete id="deleteUser" parameterType="Integer">
delete from user where id = #{id}
</delete>
</mapper>
3、在SqlMapConfig.xml主配置文件下添加批量扫描类别名和批量扫描映射文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 读取jdbc配置文件 -->
<properties resource="jdbc.properties"/>
<!-- 设置别名,包下的类名即为别名 -->
<typeAliases>
<package name="com.iteason.pojo"/>
</typeAliases>
<!-- 和spring整合后 environments配置将废除 -->
<environments default="development">
<environment id="development">
<!-- 使用jdbc事务管理 -->
<transactionManager type="JDBC" />
<!-- 数据库连接池 -->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}" />
<property name="url"
value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
</environments>
<!-- 包下批量扫描映射文件,映射文件前面的名字要和mapper接口一样 -->
<mappers>
<package name="com.iteason.mapper"/>
</mappers>
</configuration>
4、测试增加User
@Test
public void insertUser() throws Exception {
//加载核心配置文件
String resource = "sqlMapConfig.xml";
InputStream in = Resources.getResourceAsStream(resource);
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
SqlSession sqlSession = factory.openSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = new User();
user.setId(1212);
user.setUsername("hahahahaa");
mapper.insertUser(user);
sqlSession.commit();
}
5、测试删除User
@Test
public void deleteTest() throws Exception {
//加载核心配置文件
String resource = "sqlMapConfig.xml";
InputStream in = Resources.getResourceAsStream(resource);
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
SqlSession sqlSession = factory.openSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.deleteUser(31);
sqlSession.commit();
}
6、测试更新User
@Test
public void testUpdate() throws Exception {
//加载核心配置文件
String resource = "sqlMapConfig.xml";
InputStream in = Resources.getResourceAsStream(resource);
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
SqlSession sqlSession = factory.openSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.updateUser(1);
sqlSession.commit();
}
7、测试查询User
@Test
public void selectUser() throws Exception {
//加载核心配置文件
String resource = "sqlMapConfig.xml";
InputStream in = Resources.getResourceAsStream(resource);
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
SqlSession sqlSession = factory.openSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = mapper.findUserById(10);
System.out.println(user);
}