Java MyBatis XXXMapper.xml中的批量更新

作者: java 发布时间: 2023-01-25 浏览: 3779 次 编辑

1、准备环境

这篇文章的批量操作都将是针对User用户表,下面给出相关的代码。

SQL建表语句

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `username` varchar(50) DEFAULT NULL COMMENT '用户名称',
  `password` varchar(50) DEFAULT NULL COMMENT '密码',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3010 DEFAULT CHARSET=utf8;

2、批量更新

批量更新是通过mybatis的foreach标签生成多条update语句实现的,如下所示。

注意:由于这里批量操作是通过多条【update】语句实现的,所以首先需要让mybatis框架开启批量操作的支持。也就是允许同时执行多条SQL语句。

在mybatis的数据源连接地址后面,添加:【allowMultiQueries=true】属性即可开启批量操作的支持。

3、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.mybatis.demo.mapper.UserMapper">
    <!-- 批量更新 -->
    <update id="batchUpdate" parameterType="com.mybatis.demo.domain.User">
        <foreach collection="userList" item="user" separator=";">
            update user
            set username = #{user.username},
                password = #{user.password}
            where id = #{user.id}
        </foreach>
    </update>
</mapper>