mybatis 如何批量操作数据库

本文介绍如何使用MyBatis进行数据批量插入与更新操作。通过示例展示了利用foreach标签实现批量插入的方法,并介绍了使用ExecutorType.BATCH执行器类型进行批量更新的过程。

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

1、通过foreach 在sql里面批量操作数据 示例如下

    <insert id="insertForeach4Batch">
        insert into t_user (user_name, real_name,
        sex, mobile,email,note,
        position_id)
        values
        <foreach collection="list" separator="," item="user">
            (
            #{user.userName,jdbcType=VARCHAR},
            #{user.realName,jdbcType=VARCHAR},
            #{user.sex,jdbcType=TINYINT},
            #{user.mobile,jdbcType=VARCHAR},
            #{user.email,jdbcType=VARCHAR},
            #{user.note,jdbcType=VARCHAR},
            #{user.position.id,jdbcType=INTEGER}
            )
        </foreach>


    </insert>

 

2、 mybatis  批量 提交数据库

mybatis的执行器有三种类型:

 

  • ExecutorType.SIMPLE

这个类型不做特殊的事情,它只为每个语句创建一个PreparedStatement。

  • ExecutorType.REUSE

这种类型将重复使用PreparedStatements。

  • ExecutorType.BATCH

这个类型批量更新,且必要地区别开其中的select 语句,确保动作易于理解。


    @Test
    // 批量更新
    public void testBatchExcutor() {
        // 2.获取sqlSession
          SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, true);
        // 3.获取对应mapper
        TUserMapper mapper = sqlSession.getMapper(TUserMapper.class);
        
        TUser user = new TUser();
        user.setUserName("mark");
        user.setRealName("毛毛");
        user.setEmail("xxoo@163.com");
        user.setMobile("18695988747");
        user.setNote("mark's note");
        user.setSex((byte) 1);
        TPosition positon1 = new TPosition();
        positon1.setId(1);
        user.setPosition(positon1);
        System.out.println(mapper.insertSelective(user));
        
        TUser user1 = new TUser();
        user1.setId(3);
        user1.setUserName("cindy");
        user1.setRealName("王美丽");
        user1.setEmail("xxoo@163.com");
        user1.setMobile("18695988747");
        user1.setNote("cindy's note");
        user1.setSex((byte) 2);
        user.setPosition(positon1);
        System.out.println(mapper.updateIfAndSetOper(user1));
        
        sqlSession.commit();
        System.out.println("----------------");

    }

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值