四、Mybatis动态插入之foreach插入、实现in集合、优化等

1、使用场景

​ 在实际开发过程中,我们经常需要批量更新或者是批量查询,此时如果逐条插入,将影响效率。所以通常我们都是将其封装为一个集合,再进行插入。主要以下三种方式:

  1. foreach 实现批量插入
  2. foreach 实现in集合
  3. foreach 实现动态update,与插入类似。
  4. foreach优化

2、foreach属性介绍

  1. collection:指定要遍历的集合。入参为list,collection为list;入参为数组,collection为array;入参为map,collection为集合的名称;不过你写collection也可以。
  2. index:循环索引,遍历l数组或者集合时,该值为当前索引值;遍历map的时候index表示的就是map的key,item就是map的值。
  3. item:将当前遍历出的元素赋值给指定的变量,可以理解成变量中的user。
  4. open:循环以什么开始。
  5. close:循环以什么结束。
  6. separator:循环内容之间以什么分隔。

3、foreach实现insert批量插入

​ 在此之前,要配置好maven环境,增加junit、log4j(便于调试测试)依赖,具体可以看我之前写的文章:https://blog.csdn.net/weixin_35798336/article/details/111052348

测试类:

@Test
    public void insertsTest(){
   
        List<User> users= new ArrayList<User>();
        /*将user加入集合为了演示,实际项目中不可能出现该类重复代码*/
        User user = new User(11,"as","sds",10);
        User user1 = new User(12,"as","sds",0);
        User user2 = new User(13,"as"
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Mybatis 中可以通过 foreach 标签来实现批量插入操作。这个标签可以遍历一个集合,并且将集合中的元素作为参数传递给 SQL 语句中的占位符。 以下是一个示例代码: ``` <insert id="batchInsert"> INSERT INTO user (name, age) VALUES <foreach collection="users" item="user" separator=","> (#{user.name}, #{user.age}) </foreach> </insert> ``` 在这个示例中,我们定义了一个 id 为 batchInsertinsert 标签,其中 users 是一个集合,item 属性指定了遍历集合时每个元素的变量名。在 SQL 语句中,我们使用了 foreach 标签将集合中的元素作为参数传递给 SQL 语句中的占位符。 在使用 foreach 标签时,需要注意以下几点: 1. collection 属性指定要遍历的集合 2. item 属性指定集合中每个元素的变量名 3. separator 属性指定分隔符,将每个元素拼接在一起 4. open 和 close 属性指定当前标签的前缀和后缀 需要注意的是,Mybatis 中的批量插入操作需要开启 JDBC 的批处理模式,可以通过设置 executorType 属性为 BATCH 来开启。例如: ``` <insert id="batchInsert" parameterType="java.util.List" executorType="BATCH"> INSERT INTO user (name, age) VALUES <foreach collection="list" item="user" separator=","> (#{user.name}, #{user.age}) </foreach> </insert> ``` 这里的 executorType 属性设置为 BATCH,表示开启 JDBC 的批处理模式。同时,parameterType 属性也需要设置为 java.util.List,以便 Mybatis 可以将集合作为参数传递给 SQL 语句。 总之,使用 Mybatisforeach 标签可以方便地实现批量插入操作。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值