mybatis 批量更新

https://blog.csdn.net/xu1916659422/article/details/77971696

注意第一种方法要想成功,需要在db链接url后面带一个参数  &allowMultiQueries=true

即:  jdbc:mysql://localhost:3306/mysqlTest?characterEncoding=utf-8&allowMultiQueries=true

    <!-- 这次用resultmap接收输出结果  -->
    <select id="findByName" parameterType="string" resultMap="customerMap">
        select * from t_customer where c_name like concat(‘%‘, #{name},‘%‘) order by c_ceroNo limit 0,100
    </select>

    <!-- 批量更新第一种方法,通过接收传进来的参数list进行循环着组装sql -->
    <update id="batchUpdate" parameterType="java.util.Map">
        <!-- 接收list参数,循环着组装sql语句,注意for循环的写法
             separator=";" 代表着每次循环完,在sql后面放一个分号
             item="cus" 循环List的每条的结果集
             collection="list" list 即为 map传过来的参数key -->
        <foreach collection="list" separator=";" item="cus">
            update t_customer set
            c_name = #{cus.name},
            c_age = #{cus.age},
            c_sex = #{cus.sex},
            c_ceroNo = #{cus.ceroNo},
            c_ceroType = #{cus.ceroType}
            where id = #{cus.id}
        </foreach>
    </update>

    <!-- 批量更新第二种方法,通过 case when语句变相的进行批量更新 -->
    <update id="batchUpdateCaseWhen" parameterType="java.util.Map">
        update t_customer
        <trim prefix="set" suffixOverrides=",">
            <!-- 拼接case when 这是一种写法 -->
            <!--<foreach collection="list" separator="" item="cus" open="c_age = case id" close="end, ">-->
            <!--when #{cus.id} then #{cus.age}-->
            <!--</foreach>-->

            <!-- 拼接case when 这是另一种写法,这种写着更专业的感觉 -->
            <trim prefix="c_name =case" suffix="end,">
                <foreach collection="list" item="cus">
                    <if test="cus.name!=null">
                        when id=#{cus.id} then #{cus.name}
                    </if>
                </foreach>
            </trim>
            <trim prefix="c_age =case" suffix="end,">
                <foreach collection="list" item="cus">
                    <if test="cus.age!=null">
                        when id=#{cus.id} then #{cus.age}
                    </if>
                </foreach>
            </trim>
            <trim prefix="c_sex =case" suffix="end,">
                <foreach collection="list" item="cus">
                    <if test="cus.sex!=null">
                        when id=#{cus.id} then #{cus.sex}
                    </if>
                </foreach>
            </trim>
            <trim prefix="c_ceroNo =case" suffix="end,">
                <foreach collection="list" item="cus">
                    <if test="cus.ceroNo!=null">
                        when id=#{cus.id} then #{cus.ceroNo}
                    </if>
                </foreach>
            </trim>
            <trim prefix="c_ceroType =case" suffix="end,">
                <foreach collection="list" item="cus">
                    <if test="cus.ceroType!=null">
                        when id=#{cus.id} then #{cus.ceroType}
                    </if>
                </foreach>
            </trim>
        </trim>
        <where>
            <foreach collection="list" separator="or" item="cus">
                id = #{cus.id}
            </foreach>
        </where>
    </update>

原文地址:https://www.cnblogs.com/lxh520/p/8794381.html

时间: 2024-11-04 04:40:06

mybatis 批量更新的相关文章

Mybatis批量更新数据

Mybatis批量更新数据 第一种方式 [html] view plain copy print? <update id="updateBatch" parameterType="Map"> update aa   set a=#{fptm}, b=#{csoftrain} where c in <foreach collection="cs" index="index" item="item&qu

mybatis批量更新

mybatis批量更新 以前做的东西,怕忘了随手做一个记录 首先在配置数据库连接字符串后面加上 &allowMultiQueries=true 我的完整的是这样的 jdbc:mysql://192.168.1.200:3306/huasheng?characterEncoding=utf-8&allowMultiQueries=true Controller层把一个JSON字符串转换成list集合 @RequestMapping(value = "/update") p

Mybatis批量更新&lt;转&gt;

Mybatis批量更新 批量操作就不进行赘述了.减少服务器与数据库之间的交互.网上有很多关于批量插入还有批量删除的帖子.但是批量更新却没有详细的解决方案. 实现目标 这里主要讲的是1张table中.根据不同的id值,来update不同的property. 数据表:1张.Tblsupertitleresult.错题结果统计. 表结构: 表中每一条数据必须通过两个字段来确定:userHhCode+titleId 需要批量更新的字段是:correctDate,result,checkState. 1批

Mybatis 批量更新多个字段值

Mybatis 批量更新多个字段值 Controller /** * * @Description: 生产物资-指标 发布接口 * @Creator: tangsw * @CreateTime: 2019-12-25 10:37:34 * @Modifier: * @ModifyTime: * @Reasons: * @param output 产品生产产量 * @param capacity 产能利用率 * @param contract 按期履约率 * @param vendor 供应商不良

Mybatis -- 批量更新 -- updateBatch

mysql数据库配置: 数据库连接必须配置:&allowMultiQueries=true并且'&' 用&替换 jdbc.url=jdbc:mysql://192.168.10.10:3306/gt_environ?characterEncoding=utf8&connectTimeout=1000&allowMultiQueries=true 啦啦啦 ---------------UpdateBatch Class : Dao /** * 批量更新environ

Mybatis 批量更新 ORA-00911: 无效字符的错误

使用<foreach></foreach> 批量insert时报错 ORA-00911: 无效字符的错误 <foreach collection="list" item="item" index="index" separator=";"> insert into table1 (column1) values (#{item.num}) </foreach> Mybatis 会

mybatis 批量更新update

使用mybatis逆向工程生成的Example处理批量逻辑删除update /* 将前端接收的id集合拼接的字符串解析 */ String idListStr = baseConditions.getIdList();String[] idStrList = idListStr.split(","); List<Integer> integerList = new ArrayList<Integer>();for (int i = 0; i < idStr

Mybatis批量更新 updateBatch

<update id="updateBatch" parameterType="java.util.List"> update mydata_table <trim prefix="set" suffixOverrides=","> <trim prefix="status =case" suffix="end,"> <foreach colle

MyBatis批量更新动态sql

<update id="updateDataKetState"> update ${tablespace}.IDEA_DATAKEY_STATE <trim prefix="set" suffixOverrides=","> <trim prefix="STATENAME = case" suffix="end,"> <foreach collection=&quo