mybatis中oralce,mysql,sqlsever数据库批量修改

java中DAO的代码:

  int editSystemBatch(@Param("list")List<SubSysThemeVo> list);

1.oracle 批量修改

 <update id="editSystemBatch" parameterType="java.util.List">
        <foreach collection="list" item="theme" index="index" open="begin" close=";end;" separator=";">
	     UPDATE T_BAS_MENU
	        <trim prefix="set" suffixOverrides=","> 
	           <if test="theme.menuName !=null and theme.menuName != ''">
	           		MENUNAME = #{theme.menuName,jdbcType= VARCHAR},
	           </if>
	           <if test="theme.menuPic !=null and theme.menuPic != ''">
	           		MENUPIC = #{theme.menuPic,jdbcType= VARCHAR},
	           </if>
	        </trim> 
	       where MENUID = #{theme.menuId,jdbcType=INTEGER}
        </foreach>
</update>

2.mysql批量修改

 <update id="editSystemBatch" parameterType="java.util.List">
      update T_BAS_MENU
        <trim prefix="set" suffixOverrides=",">
          <trim prefix="menuName=(case" suffix="end),">
             <foreach collection="list" item="theme">
	               <if test="theme.menuName !=null and theme.menuName != ''">
	           		when  MENUID = #{theme.menuId} then #{theme.menuName,jdbcType=VARCHAR}
	               </if>
              </foreach>
           </trim>
          <trim prefix="menuPic=(case" suffix="end),">
             <foreach collection="list" item="theme">
	               <if test="theme.menuPic !=null and theme.menuPic != ''">
	           		when  MENUID = #{theme.menuId} then #{theme.menuPic,jdbcType=VARCHAR}
	               </if>
              </foreach>
           </trim>
        </trim>       
       where MENUID in 
        <foreach collection="list" item="theme" index="index" open="("  separator="," close=")">
            #{theme.menuId}
        </foreach> 
</update>

或者

 <update id="editSystemBatch" parameterType="java.util.List">
        insert into  T_BAS_MENU(MENUID,
                            MENUNAME,
                            MENUPIC
        )values
         <foreach collection="list" item="theme" open="" close="" index="index"  separator=",">
                 (#{theme.menuId,jdbcType= INTEGER},
                 #{theme.menuName,jdbcType= VARCHAR},
                 #{theme.menuPic,jdbcType= VARCHAR}
                 )
         </foreach>
          on duplicate key update 
          MENUID = values(MENUID),
          MENUNAME = values(MENUNAME),
          MENUPIC = values(MENUPIC)
      </update>

3.sqlsever批量修改

<update id="editSystemBatch" parameterType="java.util.List">
    <foreach collection="list" item="theme" index="index" open="" close="" separator=";">
     UPDATE T_BAS_MENU
        <trim prefix="set" suffixOverrides=","> 
           <if test="theme.menuName !=null and theme.menuName != ''">
           		MENUNAME = #{theme.menuName,jdbcType= VARCHAR},
           </if>
           <if test="theme.menuPic !=null and theme.menuPic != ''">
           		MENUPIC = #{theme.menuPic,jdbcType= VARCHAR},
           </if>
        </trim> 
       where MENUID = #{theme.menuId,jdbcType=INTEGER}
    </foreach>
</update>

可以看出

  1. oracle的foreach 是 :
<foreach collection="list" item="theme" index="index" open="begin" close=";end;" separator=";">
</foreach>
  1. sqlsever的foreach 是 :
<foreach collection="list" item="theme" index="index" open="" close="" separator=";">
<foreach>
  1. mysql 需要借助case… when… 或者用insert into … on duplicate key update …(还有其他两种不常用)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值