mybatis批量插入方式

本文详细介绍了MyBatis框架中foreach标签的使用方法及其属性设置,包括collection、item、separator等,并通过具体示例展示了如何利用foreach进行批量插入操作及构建复杂SQL语句。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

foreach方式插入

@Test
public void testInsertBatch() throws Exception {
    long start = System.currentTimeMillis();
    List<User> list = new ArrayList<>();
    User user;
    for (int i = 0; i < 10000; i++) {
        user = new User();
        user.setId("test" + i);
        user.setName("name" + i);
        user.setDelFlag("0");
        list.add(user);
    }
    userService.insertBatch(list);
    long end = System.currentTimeMillis();
    System.out.println("---------------" + (start - end) + "---------------");
}

<insert id="insertBatch">
    INSERT INTO t_user
            (id, name, del_flag)
    VALUES
    <foreach collection ="list" item="user" separator =",">
         (#{user.id}, #{user.name}, #{user.delFlag})
    </foreach >
</insert>

2关于foreach标签,有几个属性应该注意一下:

[java]  view plain  copy
  1. collection:指定要遍历的集合:  
  2. list类型的参数会特殊处理封装在map中,map的key就叫list  
  3. item:将当前遍历出的元素赋值给指定的变量  
  4. separator:每个元素之间的分隔符  
  5. open:遍历出所有结果拼接一个开始的字符  
  6. close:遍历出所有结果拼接一个结束的字符  
  7. index:索引。遍历list的时候是index就是索引,item就是当前值  
  8. 遍历map的时候index表示的就是map的key,item就是map的值  
  9. #{变量名}就能取出变量的值也就是当前遍历出的元素  
  1. <insert id="addEmps">  
  2.         INSERT INTO tb1_emplyee(last_name,email,gender,d_id)  
  3.         VALUES   
  4.         <foreach collection="emps" item="emp" separator=",">  
  5.             (#{emp.lastName},#{emp.email},#{emp.gender},#{emp.dept.id})  
  6.         </foreach>  
  7. </insert> 
  1. <select id="getEmpsByConditionForeach" resultType="com.test.beans.Employee">  
  2.         SELECT * FROM tb1_emplyee WHERE id IN  
  3.         <foreach collection="list" item="item_id" separator="," open="(" close=")">  
  4.             #{item_id}  
  5.         </foreach>  
  6. </select> 
   private List<integer> ids;
<select id="find" parameterType="qo" resultMap="userResult">
    select * from `user`
    <where>
        <foreach collection="ids" open=" and id in(" close=")" 
        item="id" separator=",">
            #{id}
        </foreach>
    </where>
    limit 0,10
</select>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值