mybatis针对Oracle数据库进行(单个或多个条件)批量操作(新增、修改、删除)的sql写法--mysql

1、批量新增:
 
  1. <insert id="addMonthDutyIntoDB" parameterType="java.util.List">  
  2.      insert into TB_DUTY select SEQ_TB_DUTY.nextval,A.* from(  
  3.     <foreach collection="list" item="item" index="index" separator="union">    
  4.       SELECT  #{item.dscd}, #{item.unitId},#{item.year},#{item.month},#{item.day},#{item.weekDay},   
  5.       #{item.morningPeopleIds}, #{item.morningPeopleNames},#{item.afternoonPeopleIds},#{item.afternoonPeopleNames},#{item.eveningPeopleIds},   
  6.       #{item.eveningPeopleNames},#{item.leaderIds},#{item.leaderNames},#{item.flag},#{item.remark},#{item.day0} FROM DUAL  
  7.     </foreach>   
  8.     ) A   
  9.   </insert>  

2、批量修改:
单个条件、单个修改字段:
  1. <update id="auditMultiByIds" parameterType="java.util.List">    
  2.   update tb_code_name_result_new set state=#{state,jdbcType=INTEGER} where id in  
  3.    <foreach collection="list" item="item" index="index" open="(" separator="," close=")" >    
  4.        #{item}    
  5.    </foreach>    
  6. lt;/update>  

多个条件、多个修改字段:
  1. <update id="updateByMultiConditions" parameterType="java.util.List">     
  2.     <foreach collection="list" item="item" index="index" open="begin" close="; end;" separator=";">   
  3.      update TB_DUTY   
  4.      <set>  
  5.       <if test="item.morningPeopleIds != null and item.morningPeopleIds != '' " >  
  6.      MORNING_PEOPLE_IDS=#{item.morningPeopleIds,jdbcType=VARCHAR},  
  7.       </if>  
  8.       <if test="item.morningPeopleNames != null and item.morningPeopleNames != '' " >  
  9.      MORNING_PEOPLE_NAMES=#{item.morningPeopleNames,jdbcType=VARCHAR},   
  10.       </if>   
  11.       <if test="item.afternoonPeopleIds != null and item.afternoonPeopleIds != '' " >  
  12.      AFTERNOON_PEOPLE_IDS=#{item.afternoonPeopleIds,jdbcType=VARCHAR},    
  13.       </if>  
  14.       <if test="item.afternoonPeopleNames != null and item.afternoonPeopleNames != '' " >  
  15.      AFTERNOON_PEOPLE_NAMES=#{item.afternoonPeopleNames,jdbcType=VARCHAR},   
  16.       </if>   
  17.       <if test="item.eveningPeopleIds != null and item.eveningPeopleIds != '' " >  
  18.      EVENING_PEOPLE_IDS=#{item.eveningPeopleIds,jdbcType=VARCHAR},    
  19.       </if>  
  20.       <if test="item.eveningPeopleNames != null and item.eveningPeopleNames != '' " >  
  21.      EVENING_PEOPLE_NAMES=#{item.eveningPeopleNames,jdbcType=VARCHAR},  
  22.       </if>  
  23.       <if test="item.leaderIds != null and item.leaderIds != '' " >    
  24.      LEADER_IDS=#{item.leaderIds,jdbcType=VARCHAR},    
  25.       </if>  
  26.      <if test="item.leaderNames != null and item.leaderNames != '' " >  
  27.      LEADER_NAMES=#{item.leaderNames,jdbcType=VARCHAR},  
  28.      </if>  
  29.      </set>   
  30.      where DUTY_ID=#{item.dutyId,jdbcType=INTEGER}  
  31.     </foreach>  
  32. </update>  


3、批量删除:
单个条件:
  1. <delete id="delMultiByIds" parameterType="java.util.List">    
  2.      delete from TB_CODE_NAME_RESULT_NEW  
  3.     where ID in  
  4.     <foreach collection="list" index="index" item="item" open="(" separator="," close=")">     
  5.         #{item}     
  6.     </foreach>    
  7. </delete>  

多个条件:
  1. <delete id="delMultiByIds2" parameterType="java.util.List">   
  2.   delete from tb_duty A  
  3.   where exists   
  4.   (   
  5.    select 1 from(  
  6.     <foreach collection="list" item="item" index="index" separator="union all">    
  7.      select  B.* from tb_duty B where 1=1 and  B.dscd=${item.dscd} and B.unit_id=${item.unitId} and   
  8.       B.year=${item.year} and B.month=${item.month} and B.flag=${item.flag}   
  9.     </foreach>  
  10.     )S where  A.duty_id=S.duty_id  
  11.   )  
  12. </delete>  

多个条件第2种形式:
  1. <!-- 成功删除返回的是-1而不是删除的记录数 -->  
  2.      <delete id="delMultiByIds" >   
  3.         <foreach collection="list" item="item" index="index"  open="begin" close="; end;" separator=";">    
  4.         delete from tb_duty_statistics a   
  5.         where a.person_id   
  6.         in(  
  7.         select b.person_id from tb_duty_person_info b where b.dscd=#{dscd,jdbcType=CHAR} and b.unit_id=#{unitId,jdbcType=INTEGER}  
  8.         )   
  9.         and substr(a.duty_id,1,7)=#{item.dutyId,jdbcType=CHAR}  
  10.         </foreach>  
  11.     </delete>  

4、批量查询:(未验证)
  1. <select id="selectBySomePoiIds" resultType="list" parameterType="java.util.Map">        
  2.     SELECT <include refid="Base_Column_List" /> FROM 表名        
  3.     WHERE poi_id in  
  4.       
  5.     <foreach collection="poiIds" item="poiId" index="index" open="(" close=")" separator=",">              
  6.     #{poiId}          
  7.     </foreach>  
  8.       
  9.     AND pass_uid = #{passUid}            
  10.     <if test="status != null">              
  11.     AND status = #{status,jdbcType=BIGINT}             
  12.     </if>    
  13. </select>  


5、mapper常用写法
  1. <resultMap id="BaseResultMap" type="com.xyxc.CustomerInfoEntity">  
  2.     <id column="id" property="id" />  
  3.     <result column="aa" property="aa" />  
  4.     <result column="bb" property="bb" />  
  5. </resultMap>  
  6.   
  7. <sql id="table_column_no_id">  
  8.     aa,  
  9.     bb ,  
  10.     cc,  
  11.     dd,  
  12.     ee  
  13. </sql>  
  14.   
  15. <sql id="columns" >  
  16.     id,<include refid="table_column_no_id"/>  
  17. </sql>  
  18.   
  19. <sql id="table_name" >  
  20.     TableName  
  21. </sql>  
  22.   
  23. <insert id="insert" parameterType="com.xyxc.CustomerInfoEntity" useGeneratedKeys="true" keyProperty="installmentId">  
  24.     <![CDATA[  
  25.         INSERT INTO T_DDQ_INSTALLMENT_INFO (  
  26.         aa,  
  27.         bb ,  
  28.         cc,  
  29.         dd,  
  30.         ee  
  31.         )  
  32.         VALUES (  
  33.         #{sltAccountId},  
  34.         #{loanPeriodNo},  
  35.         #{scheduleAmount},  
  36.         now(),  
  37.         now()  
  38.         )  
  39.     ]]>  
  40.   
  41.     <selectKey resultType="Long" keyProperty="installmentId" order="AFTER">  
  42.         <![CDATA[ SELECT LAST_INSERT_ID()  AS installmentId  ]]>  
  43.     </selectKey>  
  44. </insert> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值