mybatis复杂sql实现

Posted handy-liu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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>



以上是关于mybatis复杂sql实现的主要内容,如果未能解决你的问题,请参考以下文章

MyBatis:实现MyBatis程序

Mybatis关于复杂的SQL查询的处理&Mybatis的缓存机制

Mybatis关于复杂的SQL查询的处理&Mybatis的缓存机制

MyBatis动态SQL

1.尚硅谷_MyBatis_简介.avi

SpringBoot:4.SpringBoot整合Mybatis实现数据库访问