MyBatis之sql批量操作CRUD

先放流程分析:

MyBatis之sql批量操作CRUD


bean类:

public class User {
    private Long id;
    private String username;
    private String password;
    private String nickname;
    private Integer age;
    //Getter,Setter方法和toString...
}

beanMapper接口:

public interface UserMapper {
    void saveBatch(List<User> list);//批量新增
    void deleteBatch(List<Long> ids);//批量删除
    ...
}

BeanMapper.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 namespace="com.zhengqing.mybatis._02batchOption.UserMapper"> <!--全限定mapper名-->
    <!-- 写sql:注意sql语句要和Dao层接口方法对应! -->
    <insert id="saveBatch" parameterType="list">
        INSERT into user(username,password,age) VALUES
        <!-- collection="list":遍历的集合  index:索引  item:每次遍历得到的对象 open:以什么开始 close:以什么关闭 separator:分隔符 -->
        <foreach collection="list"  item="user"  separator=",">
            (#{user.username},#{user.password},#{user.age})
        </foreach>
    </insert>

    <!-- void deleteBatch(List<Long> ids);-->
    <delete id="deleteBatch" parameterType="list">
        <!-- DELETE from user where id in(2,3,4,5) -->
        <!-- collection="list":遍历的集合  index:索引  item:每次遍历得到的对象 open:以什么开始 close:以什么关闭 separator:分隔符 -->
        DELETE from user where id in
        <foreach collection="list"  item="id" open="(" close=")" separator=",">
            #{id}
        </foreach>
    </delete>

</mapper>

测试类:

public class UserMapperTest {

    @Test
    public void deleteBatch() {
        SqlSession sqlSession=null;
        try {
            sqlSession= MybatisUtil.getSqlSession();
            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
          /*  List<Long> list=new ArrayList<>();
            list.add(1L);
            list.add(2L);*/
            userMapper.deleteBatch(Arrays.asList(57L,58L,59L,60L));
            sqlSession.commit();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (sqlSession != null) {
                sqlSession.close();
            }
        }
    }


}

注意:mybatis-config.xml核心配置文件中引入映射文件

<!-- 批量操作 -->
<mapper resource="com/zhengqing/mybatis/_02batchOption/UserMapper.xml"/>