mybatis中特殊SQL的几种配置方法

1.in条件for循环

<select id="getMaxBookingSeqList" resultMap="java.util.Map" parameterType="java.util.List" >
	select booking_no, max(booking_general_seq) max_seq from interface_booking_t where booking_no in
      <foreach item="item" index="index" collection="list" open="(" separator="," close=")">
	 	#{item}
	  </foreach>	
 	group by booking_no
  </select>

2.insert并且返回主键
<insert id="insertAndGetId" parameterType="com.phy.mlisp.management.domain.Document">
		<selectKey resultType="long" order="BEFORE" keyProperty="id">
			SELECT MLISP_DOCUMENT_SEQ.NEXTVAL as ID from DUAL
		</selectKey>
		insert into MLISP_DOCUMENT_T (ID, NAME, ALIAS,
		FILE_SIZE,CONTENT,STATUS,CREATE_BY,CREATE_DATE,LAST_UPDATE_BY,
		LAST_UPDATE_DATE)
		values (#{id},#{name,jdbcType=VARCHAR}, #{alias,jdbcType=VARCHAR},#{fileSize,jdbcType=INTEGER},
		#{content,jdbcType=BLOB},
		#{status,jdbcType=INTEGER},#{createBy,jdbcType=VARCHAR},SYSDATE,
		#{lastUpdateBy,jdbcType=VARCHAR},SYSDATE)
	</insert>

3.批量insert
<insert id="batchInsert" parameterType="java.util.List">
  insert into INTERFACE_BOOKING_CONTA_T (ID, BOOKING_ID, BOOKING_CONTAINER_SEQ, 
      CONTA_TYPE, CONTA_SIZE, CONTA_QUANTITY, 
      CONTA_SIZE_TYPE_ISO)
              select  interface_booking_conta_seq.NEXTVAL,A.*  from(
              <foreach collection="list" item="item" index="index"  separator="UNION ALL" >
                  (select #{item.bookingId,jdbcType=DECIMAL}, #{item.bookingContainerSeq,jdbcType=DECIMAL}, 
			      #{item.contaType,jdbcType=VARCHAR}, #{item.contaSize,jdbcType=VARCHAR}, #{item.contaQuantity,jdbcType=DECIMAL}, 
			      #{item.contaSizeTypeIso,jdbcType=VARCHAR} from dual)
             </foreach>) A
     </insert> 

4.批量更新
<update id="batchUpdate" parameterType="java.util.List">
      <foreach collection="list" item="item" index="index" open="begin" close=";end;" separator=";">
      	UPDATE WCP_DISPATCH_CONTA_T
		<set>
		    <if test="item.dispatchId != null">
                      DISPATCH_ID = #{item.dispatchId,jdbcType=DECIMAL},
                    </if>
		</set>
		WHERE DISPATCH_ID = #{item.dispatchId,jdbcType=DECIMAL}
      </foreach>
    </update>

5.返回Map<String,Object>或List<Map<String,Object>>
<select id="getPaymentSOList" resultType="java.util.HashMap" parameterType="java.util.Map">
   select * from dual
        WHERE 1=1
          <if test="firstDay!=null" >
             AND ws.create_date >= #{firstDay,jdbcType=TIMESTAMP}   
         </if>
</select>

Dao接口
List<Map<String,Object>> getPaymentSOList(Map<String,Object> map);
Map<String,Object> getPaymentSO(Map<String,Object> map);
int batchInsert(List<T> wbList);
void batchUpdate(List<T> recordList);
long insertAndGetId(T record);
List<T> getMaxBookingSeqList(ArrayList<String> arrayList);






  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yn00

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值