当前位置: 首页 > news >正文

mybatis 脚本

1,批量更新

 注意:当 parameterType="java.util.List"  的时候,collection="list" 

<update id="resultFeedback" parameterType="java.util.List">
    UPDATE tm_esim_social_result 
       SET result_status = 
             <foreach collection="list" item="item" separator=" " open="(CASE id" close="ELSE result_status END),">
                WHEN #{item.id,jdbcType=VARCHAR} THEN #{item.resultStatus,jdbcType=VARCHAR}
             </foreach>
           fail_reason = 
             <foreach collection="list" item="item" separator=" " open="(CASE id" close="ELSE fail_reason END),">
                WHEN #{item.id,jdbcType=VARCHAR} THEN #{item.failReason,jdbcType=VARCHAR}
             </foreach>
           state = 
             <foreach collection="list" item="item" separator=" " open="(CASE id" close="ELSE state END),">
                WHEN #{item.id,jdbcType=VARCHAR} THEN #{item.state,jdbcType=VARCHAR}
             </foreach>
           feedback_time = NOW(),
           update_by = #{item.updateBy,jdbcType=VARCHAR},
           update_date = NOW()
     WHERE id IN 
         <foreach collection="list" item="item" separator="," open="(" close=")">
            #{item.id,jdbcType=VARCHAR}
         </foreach>
</update>

 当parameterType为一个对象的时候,注意,foreach 的 colletion 属性为这个对象下面的属性

<update id="feedbackAll" parameterType="com.sf.esim.domain.payable.payDo">             
    UPDATE table01
       SET state = #{state,jdbcType=VARCHAR}                                                        
     WHERE id IN                                                                      
    <foreach collection="transferIdList" index="index" item="item" open="(" separator="," close=")">
          #{item,jdbcType=VARCHAR}                                                                  
    </foreach>                                                                                      
</update>                                                                                           

 批量增加:

<insert id="addListPayable" parameterType="com.sf.haha.domain.payable.PayableDo">
    INSERT INTO tm_esim_payable 
    ( 
      tm_esim_payable_id,
      pay_the_city,
      account,
      bussi_type
     )
    VALUES 
    <foreach collection="list" item="item" separator=",">  
     (
       #{item.tmEsimPayableId},
       #{item.payTheCity},
       #{item.account},
       #{item.bussiType}
       )
    </foreach>  
</insert>

 这个我还没有测试过,懒得测试,因为其实大概知道怎么着就可以的了

<update id="updatePersonalUnitPayById" parameterType="com.sf.esim.domain.deducted.DeductingDetailDo">
        <foreach collection="list" index="index" item="item">
            update tm_esim_deducting_detail
            <set>
                personal_pay_edit = #{item.personalPayEdit}
                ,unit_pay_edit =#{item.unitPayEdit}
                ,edit_declare = #{item.editDeclare}
            </set>
            where deducting_detail_id = #{item.deductingDetailId};
        </foreach>
    </update>

如果list的泛型是string,则collection为list

    <select id="getOrgName" parameterType="java.util.List" resultType="java.lang.String">
        SELECT GROUP_CONCAT(ORG_NAME) FROM zthr_etl_hr_org_business WHERE ORG_ID IN
        <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
                #{item,jdbcType=VARCHAR}     
           </foreach> 
    </select>

 <set>标签,自动去掉最后一个逗号

DECLARE                                                                                                   
    v_id NUMBER;                                                                                          
BEGIN                                                                                                     
    SELECT t3.id into v_id FROM (                                                                         
      SELECT t.id FROM pmp_agnt_base_info t WHERE t.card_no = #{cardNo} ORDER BY t.create_time DESC       
    )t3 WHERE ROWNUM = 1;                                                                                 
                                                                                                          
    IF v_id IS NOT NULL THEN                                                                              
          UPDATE pmp_agnt_base_info                                                                         
              <set>                                                                                         
                  <if test="@Ognl@isNotEmpty(quasiDrivingType)">driving_license = #{quasiDrivingType},</if> 
                  <if test="@Ognl@isNotEmpty(idCard)">driving_license_no = #{idCard},</if>                  
                  <if test="@Ognl@isNotEmpty(vin)">vehicle_no = #{vin},</if>                                
              </set>                                                                                        
            WHERE id = v_id;                                                                                 
            UPDATE pmp_agnt_sign_info                                                                        
              <set>                                                                                         
                  <if test="@Ognl@isNotEmpty(quasiDrivingType)">driving_license = #{quasiDrivingType},</if> 
                  <if test="@Ognl@isNotEmpty(idCard)">driving_license_no = #{idCard},</if>                  
                  <if test="@Ognl@isNotEmpty(vin)">vehicle_no = #{vin},</if>                                
              </set>                                                                                        
            WHERE base_id = v_id;                                                                            
            INSERT INTO pmp_agnt_record_sign (record_card_no,update_time) VALUES (#{cardNo},SYSDATE);        
    END IF;                                                                                                     
COMMIT;                                                                                                   
END;

 引用映射文件请参加博客(自己没有实践过):mybatis xml 映射文件 sql include 的用法

END

转载于:https://www.cnblogs.com/ericguoxiaofeng/p/8920844.html

相关文章:

  • 探究 Redis 4 的 stream 类型
  • Flink的部署
  • 矩阵快速幂模板
  • c# Color 颜色设置
  • bzoj 4521 [Cqoi2016]手机号码——数位dp
  • 性能测试中TPS上不去的几种原因浅析
  • jmeter的脚本增强之参数化
  • 关于有时候导入maven项目时候报错(有红色叹号,类中导入的包提示the import java.util cannot be resolve,)...
  • 性能优化中CPU、内存、磁盘IO、网络性能的依赖
  • leetcode485 python3 88ms 最大连续1的个数
  • logstash常用插件解析
  • Websocket(1)pom引入、嵌入spring
  • Docker 操作记录
  • CentOS7安装GO
  • dll和lib的关系(转)
  • Akka系列(七):Actor持久化之Akka persistence
  • axios 和 cookie 的那些事
  • Fabric架构演变之路
  • FastReport在线报表设计器工作原理
  • Javascripit类型转换比较那点事儿,双等号(==)
  • js递归,无限分级树形折叠菜单
  • Redis学习笔记 - pipline(流水线、管道)
  • vuex 学习笔记 01
  • XForms - 更强大的Form
  • 工程优化暨babel升级小记
  • 官方解决所有 npm 全局安装权限问题
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • 要让cordova项目适配iphoneX + ios11.4,总共要几步?三步
  • 智能合约Solidity教程-事件和日志(一)
  • 终端用户监控:真实用户监控还是模拟监控?
  • hi-nginx-1.3.4编译安装
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • #if 1...#endif
  • #pragam once 和 #ifndef 预编译头
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • (1)SpringCloud 整合Python
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (6)STL算法之转换
  • (bean配置类的注解开发)学习Spring的第十三天
  • (day6) 319. 灯泡开关
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (超简单)构建高可用网络应用:使用Nginx进行负载均衡与健康检查
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (一)基于IDEA的JAVA基础1
  • .bat批处理(一):@echo off
  • .Net Redis的秒杀Dome和异步执行
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .net使用excel的cells对象没有value方法——学习.net的Excel工作表问题
  • [Android] Android ActivityManager
  • [Android]How to use FFmpeg to decode Android f...
  • [Android]一个简单使用Handler做Timer的例子
  • [C#][DevPress]事件委托的使用
  • [C++]——带你学习类和对象