SpringBoot配置Mybatis前文有博文,数据库mysql:

package com.example.demo.biz.dto;

public class User {

    private int id;

    private String userName;

    private String passWord;

    private String gender;

    private String email;

    private String mobile;

    private String identity;

    private String nationality;

    private String description;

    private String address;

    public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public void setUserName(String userName) {
this.userName = userName;
} public String getUserName() {
return userName;
} public String getPassWord() {
return passWord;
} public void setPassWord(String passWord) {
this.passWord = passWord;
} public String getGender() {
return gender;
} public String getEmail() {
return email;
} public String getMobile() {
return mobile;
} public String getIdentity() {
return identity;
} public String getNationality() {
return nationality;
} public String getDescription() {
return description;
} public String getAddress() {
return address;
} public void setGender(String gender) {
this.gender = gender;
} public void setEmail(String email) {
this.email = email;
} public void setMobile(String mobile) {
this.mobile = mobile;
} public void setIdentity(String identity) {
this.identity = identity;
} public void setNationality(String nationality) {
this.nationality = nationality;
} public void setDescription(String description) {
this.description = description;
} public void setAddress(String address) {
this.address = address;
} @Override
public String toString() {
return "User{" +
"id=" + id +
", userName='" + userName + '\'' +
", passWord='" + passWord + '\'' +
", gender='" + gender + '\'' +
", email='" + email + '\'' +
", mobile='" + mobile + '\'' +
", identity='" + identity + '\'' +
", nationality='" + nationality + '\'' +
", description='" + description + '\'' +
", address='" + address + '\'' +
'}';
}
}
<!--  批量插入
collection :collection属性的值有三个分别是list、array、map三种,分别对应的参数类型为:List、数组、map集合,我在上面传的参数为数组,所以值为array
    item : 表示在迭代过程中每一个元素的别名
    index :表示在迭代过程中每次迭代到的位置(下标)
    open :前缀
    close :后缀
    separator :分隔符,表示迭代时每个元素之间以什么分隔
-->
<insert id="insertBatchUser" parameterType="java.util.List">
insert into c_tbl_users (username,pwd,gender,email,mobile,identity,address)
values
<foreach collection="list" item="user" separator=",">
(#{user.userName},#{user.passWord},#{user.gender},#{user.email},#{user.mobile},#{user.identity},#{user.address})
</foreach>
</insert> <!-- MySQL没有提供直接的方法来实现批量更新,但可以使用case when语法来实现这个功能
UPDATE c_tbl_users
    SET address = CASE userName 
        WHEN 'xx1' THEN 'address1'
        WHEN 'xx2' THEN 'address2'
        WHEN 'xx3' THEN 'address3'
    END, 
    email = CASE userName 
        WHEN 'xx1' THEN 'email1'
        WHEN 'xx2' THEN 'email2'
        WHEN 'xx3' THEN 'email3'
    END
WHERE username IN ('','','')
-->
<update id="updateBatchUser" parameterType="java.util.List">
update c_tbl_users
<trim prefix="set" suffixOverrides=",">
<trim prefix="address =case" suffix="end,">
<foreach collection="list" item="i" index="index">
<if test="i.address!=null">
when username=#{i.userName} then #{i.address}
</if>
</foreach>
</trim> <trim prefix="email =case" suffix="end,">
<foreach collection="list" item="i" index="index">
<if test="i.email!=null">
when username=#{i.userName} then #{i.email}
</if>
</foreach>
</trim>
</trim>
WHERE
<foreach collection="list" separator="or" item="i" index="index" >
username=#{i.userName}
</foreach>
</update>
package com.example.demo.biz.dao;

import com.example.demo.biz.dto.User;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository; import java.util.List; /**
* xml 形式配置
*/
@Repository
public interface UserMapper {
/**
* 批量插入
* @param userList
*/
void insertBatchUser(List<User> userList); /**
* 批量更新
* @param userList
*/
void updateBatchUser(List<User> userList);
}

测试:

package com.example.demo.biz;

import com.example.demo.biz.dao.UserMapper;
import com.example.demo.biz.dto.User;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner; import java.util.ArrayList;
import java.util.List; @RunWith(SpringRunner.class)
@SpringBootTest
public class UserBatchTest {
@Autowired
protected UserMapper userMapper; @Test
public void batchInsert(){ List<User> list = new ArrayList<User>(); for (int i = 0; i < 2 ; i++) {
User user1 = new User();
user1.setUserName("黑心寥"+i);
user1.setPassWord("heixinliao");
user1.setAddress("长安"+i);
user1.setEmail("hahalong@163.com");
user1.setGender("1");
user1.setIdentity("321736165504567129");
list.add(user1);
} userMapper.insertBatchUser(list);
} @Test
public void batchUpdate(){
List<User> list = getUserList();
userMapper.updateBatchUser(list);
} private List<User> getUserList(){
List<User> list = new ArrayList<User>();
for (int i = 0; i < 2 ; i++) {
User user1 = new User();
user1.setUserName("黑心寥"+i);
user1.setPassWord("heixinliao");
user1.setAddress("金陵"+i);
user1.setEmail("hahalong@qq.com");
user1.setGender("1");
user1.setIdentity("321736165504567129");
list.add(user1);
}
return list;
}
}

Mybatis 批量插入和更新小例的更多相关文章

  1. Oracle+Mybatis批量插入,更新和删除

    1.插入 (1)第一种方式:利用<foreach>标签,将入参的list集合通过UNION ALL生成虚拟数据,从而实现批量插入(验证过) <insert id="inse ...

  2. mybatis批量插入和更新

    批量插入 <insert id="add" parameterType="java.util.List"> insert all <forea ...

  3. mybatis批量插入、更新和删除

    https://blog.csdn.net/m0_37981235/article/details/79131493 https://www.jb51.net/article/132823.htm

  4. Mybatis 批量插入、批量更新

            合理的使用批量插入.更新对性能优化有很大的作用,速度明显快了N倍.         要注意数据库连接串后面要新增:&allowMultiQueries=true,表示一个sql ...

  5. Mybatis批量插入、批量更新

    合理的使用批量插入.更新对优化有很大的作用,速度明显快了N倍. 数据库连接串后面要新增:&allowMultiQueries=true 批量插入的最大限制主要是看你整条sql占用的大小,所以可 ...

  6. mybatis 注解的方式批量插入,更新数据

    一,当向数据表中插入一条数据时,一般先检查该数据是否已经存在,如果存在更新,不存在则新增  使用关键字  ON DUPLICATE KEY UPDATE zk_device_id为主键 model  ...

  7. springMVC 接收数组参数,mybatis 接收数组参数,mybatis批量插入/批量删除案例

    案例是给一个用户赋予多个权限,多个权限用其对应的主键 id 为参数,组成了 一个id数组,传给springMVC,然后springMVC传给mybatis,然后mybatis批量插入.其实类似的场景还 ...

  8. C#使用SqlDataAdapter 实现数据的批量插入和更新

    近日由于项目要求在需要实现中型数据的批量插入和更新,晚上无聊,在网上看到看到这样的一个实现方法,特摘抄过来,以便以后可能用到参考. 一.数据的插入 DateTime begin = DateTime. ...

  9. mybatis批量插入数据到oracle

    mybatis 批量插入数据到oracle报 ”java.sql.SQLException: ORA-00933: SQL 命令未正确结束“  错误解决方法 oracle批量插入使用 insert a ...

随机推荐

  1. 2019寒假作业二:PTA7-1币值转换

    7-1 币值转换 (20 分) 输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式.如23108元,转换后变成“贰万叁仟壹百零捌”元.为了简化输出,用小写英文字 ...

  2. opencv中画圆circle函数和椭圆ellipse函数

    1.      void ellipse(InputOutputArray img, Point center, Size axes, double angle, double startAngle, ...

  3. app防攻击办法

    方法一 要求请求端带上一个随机字符串state(也可以是特定规则生成的,甚至是从服务器上请求过来的),服务端(用过滤/拦截器之类的实现不会影响业务代码)收到之后缓存一定的时间(长短视业务和硬件),每次 ...

  4. 1897. tank 坦克游戏

    传送门 显然考虑 $dp$,发现时间只和当前位置和攻击次数有关,设 $F[i][j][k]$ 表示当前位置为 $i,j$ ,攻击了 $k$ 次得到的最大分数 初始 $f[1][1][k]$ 为位置 $ ...

  5. 图片,word,Excel等附件上传

    @ResponseBody @RequestMapping("/upload") public String upload(HttpServletRequest request, ...

  6. OPECV的配置

    因为要做一点道路是别的东西,所以想用到OPENCV的一些东西.在网上找了一些OPENCCSHARP的代码,但是这方面的书籍或者资料还是不是特别的多,所以我就觉得可能还不是很好.主要的原因还是因为自己的 ...

  7. log4j日志输出格式

    %n- 换行 %m - 日志内容 %p - 日志级别(FATAL, ERROR, WARN, INFO, DEBUG or custom) %r - 程序启动到现在的毫秒数 %% - percent ...

  8. 安装运行谷歌开源的TensorFlow Object Detection API视频物体识别系统

    Linux安装 参照官方文档:https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/inst ...

  9. 88-基于FMC接口的2路CameraLink Base输入子卡模块

    基于FMC接口的2路CameraLink Base输入子卡模块 1.板卡概述 FMC连接器是一种高速多pin的互连器件,广泛应用于板卡对接的设备中,特别是在xilinx公司的所有开发板中都使用.该Ca ...

  10. JS删除对象中的某一属性(delete)

    var obj= {} 1.JS对象添加新属性 obj.address="shenzhen" 2.JS删除对象中的某一属性(delete) var obj= { height: , ...