前言: 由于业务上,我返回的两条的sql内容总体相差不大,但是字段我查询的时候,需要用不同的字段去返回
java Service层
String queryOrder(@Param("orderId")Long orderId, @Param("currentTime") Date currentTime,@Param("flag")int flag);
mybatis xml 层
<select id="queryOrder" resultType="string">
<choose>
<when test="flag == 1 ">
select
IF('2023-08-19 14:23:00' > (select renewal_start_date from ABC where sale_order_id = '1234' order by create_time desc limit 1) ,'yes','no') as flag
</when>
<when test="flag == 2 ">
select
IF('2023-08-19 14:23:00' > (select reservation_start_time from ABC where sale_order_id = '1234' order by create_time desc limit 1) ,'yes','no') as flag
</when>
</choose>
</select>
总结: 标签,在mybatis xml中 是没有做位置限制的,可以根据这种方式灵活运用执行想要的sql