Mybatis入门(二)------增删改查

Mybatis增删改查基本操作

一、XML实现方式

1、mapper.xml的配置
<?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.xml中出现重复的id -->
<mapper namespace="com.mybatis.mapper.UserMapper">
  <!-- 新增用户数据 -->
  <insert id="insertUser" parameterType="com.mybatis.model.User">
      <!-- #{name}相当于jdbc中的的?号,name值与Bean字段对应,可自动获取 -->
      insert into users values(#{id}, #{username}, #{password}, #{email}, #{age})
  </insert>
 
  <!-- 查找用户数据 -->
  <select id="selectUser" resultType="com.mybatis.model.User" parameterType="int">
      select * from users where id = #{id}
  </select>
 
  <!-- 查找用户数据集合 -->
  <!-- 基本数据类型可以不用写完整类名 -->
  <select id="selectUsers" resultType="com.mybatis.model.User" parameterType="int">
      select * from users t where t.age = #{age}
  </select> 
 
  <!-- 更新用户数据 -->
  <update id="updateUser" parameterType="com.mybatis.model.User">
      update users set age = #{age} where id = #{id}
  </update>
 
  <!-- 删除用户数据 -->
  <delete id="deleteUser" parameterType="int">
      delete from users where id = #{id}
  </delete>
</mapper>
2、单元测试代码
/**
* 使用XML配置实现CRUD操作
*/
public class DbTest2 {
 
    private SqlSessionFactory sqlSessionFactory;
    /**
     * 初始化工作
     */
    @Before
    public void init() throws IOException {
        //通过mybatis提供的资源加载类加载配置文件
        Reader reader = Resources.getResourceAsReader("Configuration.xml");
        //获取SqlSessionFactoryBuilder
        SqlSessionFactoryBuilder sqlSessionFactroyBuilder = new SqlSessionFactoryBuilder();
        //根据XML配置文件构建SqlSessionFactory
        SqlSessionFactory sqlSessionFactory = sqlSessionFactroyBuilder.build(reader);
        this.sqlSessionFactory = sqlSessionFactory;
    }
 
    //新增操作
    @Test
    public void insertUser() {
        //Mybatis默认情况下不会commit,即默认connection.setAutoCommit(false);
        //传入true代表自动提交
        SqlSession session = sqlSessionFactory.openSession(true);
        try {
            User user = new User();
            user.setId("1");
            user.setUsername("zhangsan");
            user.setPassword("123456");
            user.setAge("18");
            user.setEmail("zhangsan@163.com");
            session.insert("com.mybatis.mapper.UserMapper.insertUser", user);
        } finally {
            session.close();
        }
    }
 
    //查询操作
    @Test
    public void queryUser() {
        SqlSession session = sqlSessionFactory.openSession(true);
        try {
            User user = session.selectOne("com.mybatis.mapper.UserMapper.selectUser", 1);
            System.out.println(user);
        } finally {
            session.close();
        }
    }
 
    //查询多条操作
    @Test
    public void queryUsers() {
        SqlSession session = sqlSessionFactory.openSession(true);
        try {
            List<User> userList = session.selectList("com.mybatis.mapper.UserMapper.selectUsers", 18);
            System.out.println(userList.size());
        } finally {
            session.close();
        }
    }
 
    //更新操作
    @Test
    public void updateUser() {
        SqlSession session = sqlSessionFactory.openSession(true);
        try {
            User user = new User();
            user.setId("1");
            user.setAge("25");
            int num = session.update("com.mybatis.mapper.UserMapper.updateUser", user);
            System.out.println(num);
        } finally {
            session.close();
        }
    }
 
    //删除操作
    @Test
    public void deleteUser() {
        SqlSession session = sqlSessionFactory.openSession(true);
        try {
            int num = session.delete("com.mybatis.mapper.UserMapper.deleteUser", 1);
            System.out.println(num);
        } finally {
            session.close();
        }
    }
}

二、注解实现

1、编写Mapper接口
* 使用注解的方式配置SQL映射关系
* 需要注意的事此接口不用具体编写实现代码,而将由Mybatis动态的帮我们构建
* 这样的代码由于避免了强制类型转换和参数不匹配的问题,因此更加安全
*/
public interface UserMapperI {
    @Insert("insert into users values(#{id}, #{username}, #{password}, #{email}, #{age})")
    int insertUser(User user);
 
    @Select("select * from users where id = #{id}")
    User selectUser(String id);
 
    @Select("select * from users t where t.age = #{age}")
    List<User> selectUsers(String age);
 
    @Update("update users set age = #{age} where id = #{id}")
    int updateUser(User user);
 
    @Delete("delete from users where id = #{id}")
    int deleteUser(String id);
}
2、注册接口
<?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>
  <properties resource="database.properties"></properties>
 
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver" value="${driver}"/>
        <property name="url" value="${url}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
      </dataSource>
    </environment>
  </environments>
  <!-- 注册sql映射文件 -->
 
  <mappers>
    <!-- 注册UserMapper.xml文件 -->
    <mapper resource="com/mybatis/mapper/UserMapper.xml"/>
    <!-- 注册UserMapperI接口 -->
    <mapper class="com.mybatis.mapper.UserMapperI"/>
  </mappers>
</configuration>
3、单元测试代码
/**
* 使用注解实现CRUD操作
*/
public class DbTest3 {
    private SqlSessionFactory sqlSessionFactory;
    @Before
    public void init() throws IOException {
        //通过mybatis提供的资源加载类加载配置文件
        Reader reader = Resources.getResourceAsReader("Configuration.xml");
        //获取SqlSessionFactoryBuilder
        SqlSessionFactoryBuilder sqlSessionFactroyBuilder = new SqlSessionFactoryBuilder();
        //根据XML配置文件构建SqlSessionFactory
        SqlSessionFactory sqlSessionFactory = sqlSessionFactroyBuilder.build(reader);
        this.sqlSessionFactory = sqlSessionFactory;
    }
 
    //新增操作
    @Test
    public void insertUser() {
        SqlSession session = sqlSessionFactory.openSession(true);
        try {
            UserMapperI mapper = session.getMapper(UserMapperI.class);
            User user = new User();
            user.setId("1");
            user.setUsername("zhangsan");
            user.setPassword("123456");
            user.setAge("18");
            user.setEmail("zhangsan@163.com");
            int num = mapper.insertUser(user);
            System.out.println(num);
        } finally {
            session.close();
        }
    }
 
    //查询操作
    @Test
    public void queryUser() {
        SqlSession session = sqlSessionFactory.openSession(true);
        try {
            UserMapperI mapper = session.getMapper(UserMapperI.class);
            User user = mapper.selectUser("1");
            System.out.println(user);
        } finally {
            session.close();
        }
    }
 
    //查询多条操作
    @Test
    public void queryUsers() {
        SqlSession session = sqlSessionFactory.openSession(true);
        try {
            UserMapperI mapper = session.getMapper(UserMapperI.class);
            List<User> userList = mapper.selectUsers("18");
            System.out.println(userList.size());
        } finally {
            session.close();
        }
    }
 
    //更新操作
    @Test
    public void updateUser() {
        SqlSession session = sqlSessionFactory.openSession(true);
        try {
            UserMapperI mapper = session.getMapper(UserMapperI.class);
            User user = new User();
            user.setId("1");
            user.setAge("25");
            int num = mapper.updateUser(user);
            System.out.println(num);
        } finally {
            session.close();
        }
    }
 
    //删除操作
    @Test
    public void deleteUser() {
        SqlSession session = sqlSessionFactory.openSession(true);
        try {
            UserMapperI mapper = session.getMapper(UserMapperI.class);
            int num = mapper.deleteUser("1");
            System.out.println(num);
        } finally {
            session.close();
        }
    }
}
posted @ 2018-08-30 14:20  nlskyfree  阅读(176)  评论(0)    收藏  举报