Chinaunix首页 | 论坛 | 博客
  • 博客访问: 614345
  • 博文数量: 298
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 3077
  • 用 户 组: 普通用户
  • 注册时间: 2019-06-17 10:57
文章分类

全部博文(298)

文章存档

2022年(96)

2021年(201)

2019年(1)

我的朋友

分类: Java

2021-09-14 13:14:26

 MyBatis很好的支持批量插入,使用foreach即可满足

首先创建DAO方法:

点击(此处)折叠或打开

  1. package com.youkeda.comment.dao;

  2. import com.youkeda.comment.dataobject.UserDO;
  3. import org.apache.ibatis.annotations.Mapper;
  4. import org.apache.ibatis.annotations.Param;

  5. import java.time.LocalDateTime;
  6. import java.util.List;

  7. //fhadmin.cn
  8. @Mapper
  9. public interface UserDAO {

  10.     int batchAdd(@Param("list") List<UserDO> userDOs);

  11. }
foreach相当于执行力java的for循环,他的属性:


collection指定集合的上下文参数名称比如这里的@Param("list")
item指定遍历的每一个数据的变量,一般叫it,可以使用it.userName来获取具体的值
index集合的索引值,从0开始
separator遍历每条记录并添加分隔符
除了批量插入,使用SQL in查询多个用户时也会使用:

点击(此处)折叠或打开

  1. package com.youkeda.comment.dao;

  2. import com.youkeda.comment.dataobject.UserDO;
  3. import org.apache.ibatis.annotations.Mapper;
  4. import org.apache.ibatis.annotations.Param;

  5. import java.time.LocalDateTime;
  6. import java.util.List;

  7. //fhadmin.cn
  8. @Mapper
  9. public interface UserDAO {

  10.     List<UserDO> findByIds(@Param("ids") List<Long> ids);

  11. }

点击(此处)折叠或打开

  1. <select id="findByIds" resultMap="userResultMap">
  2.     select * from user
  3.     <where>
  4.         id in
  5.         <foreach item="item" index="index" collection="ids"
  6.                     open="(" separator="," close=")">
  7.             #{item}
  8.         </foreach>
  9.     </where>
  10. </select>

open


表示的是节点开始时自定义的分隔符

  • close

表示是节点结束时自定义的分隔符

执行后会变成:

select * from user where id in (?,?,?)
阅读(904) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~