mybatis复杂sql实现

1、like语句

示例

@Select("select * from t_xx where Fxx ='A' and Fdd like concat('%',#{dd},'%')" )
@ResultMap("BaseResultMap")
List<XXXX> selectdd(String dd);

like的写法要 concat('%',#{dd},'%')" 

 

2、in语句

 in语句有多种方式

 第一种单字段的in匹配

  建议把所需要的参数都封装到一个对象里,然后再参数类型指定类型,如<select id="select1" parameterType="com.xx.xx.data.vo.xx" resultMap="BaseResultMap"> 在sql中直接使用对象里的属性,比如定义filed1 为list类型

  <if test="filed1 != null and filed1 .size > 0 "> 

    and Fss  in
    <foreach item="item" index="index" collection="filed1 " open="(" separator="," close=")">
      #{item}
    </foreach>
  </if>

  这种写法类似and Fss  in (aa,bb,cc)

 第二种单字段多次匹配,其实是第一种的扩展

  <if test="filed1 != null and filed1 .size > 0 ">
    and
    <foreach item="item" index="index" collection="filed1 " open="(" separator=" or " close=")">
      Fss  like concat('%',#{item},'%')
    </foreach>
  </if>

  这种写法类似and ( Fss  like aa or Fss  like bb or Fss  like cc)

3、对日期的处理,比如beginDate 是date类型

  <if test="beginDate != null and beginDate != '' ">
    <![CDATA[
      and DATE_FORMAT(Fcreate_time, '%Y-%m-%d') >= DATE_FORMAT(#{beginDate}, '%Y-%m-%d')
    ]]>
  </if>

===================================================

我不能保证写的每个地方都是对的,但是至少能保证不复制、不黏贴,保证每一句话、每一行代码都经过了认真的推敲、仔细的斟酌。每一篇文章的背后,希望都能看到自己对于技术、对于生活的态度。

学习是一种信仰。面对压力,挑灯夜战、不眠不休;面对困难,迎难而上、永不退缩。

我是一个纯粹的程序员。

===================================================

 

转载于:https://www.cnblogs.com/handy-liu/p/8432600.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值