mybatis执行批量更新batch update 的方法

1、数据库连接必须配置:&allowMultiQueries=true

  我的配置如下:jdbc:mysql://10.20.13.16:3306/CALENDAR?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true

2、批量修改并加判断条件(修改字段可选)

<!-- 批量更新赛程 -->
    <update id="updateMatchs" parameterType="java.util.List">
        <foreach collection="matchs" item="item" index="index" open="" close="" separator=";">
            update t_match
            <set>
                <if test="item.title !=null">
                    TITLE = #{item.title,jdbcType=VARCHAR},
                </if>
                <if test="item.homeScore !=null">
                    HOME_SCORE = #{item.homeScore,jdbcType=INTEGER},
                </if>
                <if test="item.visitScore !=null">
                    VISTT_SCORE = #{item.visitScore,jdbcType=INTEGER},
                </if>
                <if test="item.liveSource !=null">
                    LIVE_SOURCE = #{item.liveSource,jdbcType=VARCHAR},
                </if>
                <if test="item.liveURL !=null">
                    LIVE_URL = #{item.liveURL,jdbcType=VARCHAR},
                </if>
                <if test="item.isHotMatch !=null">
                    IS_HOT_MATCH = #{item.isHotMatch,jdbcType=VARCHAR}
                </if>
            </set>
        where HOME_TEAM_ID = #{item.homeTeamId,jdbcType=VARCHAR} and
        VISIT_TEAM_ID = #{item.visitTeamId,jdbcType=VARCHAR} and
        MATCH_TIME = #{item.matchTime,jdbcType=BIGINT}
        </foreach>
    </update

java接口

    /**
     * 批量修改赛程
     * 
     * @param matchs
     * @throws DaoException
     */
    void updateMatchs(@Param(value = "matchs")List<MatchBasic> matchs);
MyBatis批量更新Batch Update)主要用于提高效率,减少数据库交互次数,尤其是在处理大量数据的时候。以下是批量更新的基本步骤: 1. **创建Mapper XML文件**:在Mapper XML文件,定义一个或多个SQL语句用于批量更新,通常会包含一个`<update>`标签,里面包含一个或多个`<set>`元素用于指定要更新的字段和新值。 ```xml <update id="batchUpdate" parameterType="java.util.List"> UPDATE table_name SET column1 = #{column1}, column2 = #{column2} WHERE id IN <foreach item="item" index="index" collection="list" open="(" separator="," close=")"> #{item.id} </foreach> </update> ``` 2. **编写Service层代码**:在Service层或Repository接口,使用`@Param`注解和`List`作为参数类型,注入Mapper并调用上面定义的`batchUpdate`方法。 ```java public int batchUpdate(List<MyEntity> entities) { return sqlSession.update("batchUpdate", entities); } ``` 这里`MyEntity`是一个代表表实体的对象,`entities`是要批量更新的集合。 3. **事务管理**:为了保证数据一致性,批处理操作通常需要放在一个事务。可以使用Spring的TransactionTemplate或者MyBatis的SqlSession的begin/commit方法来管理事务。 4. **性能优化**:记得关闭自动提交,以便于控制事务,并考虑适当设置数据库连接池大小以适应并发需求。 批量更新完成后,如果有多个成功的记录数,`update()`方法返回受影响的行数,即更新的记录总数。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值