Mybatis在注解上如何实现动态SQL

 更新时间:2022年06月13日 11:57:20   作者:k55  
这篇文章主要介绍了Mybatis在注解上如何实现动态SQL,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

在注解上实现动态SQL

使用Mybatis注解实现sql语句,但是有些时候有些字段是空的,这时候这个空的字段就要从条件查询语句中删除,这个时候就需要用到动态Sql。

注解的动态语句支持以下

  • trim
  • where
  • set
  • foreach
  • if
  • choose
  • when
  • otherwise
  • bind
@Select({"<script> " +
        "select * from t_user " +
        "where  1=1 " +
        "<if test='userId!=null'> and id = #{userId}</if> " +
        "</script>"})

要加上标签就可以实现条件判断

但是在无法使用大于号 、小于号,那如何解决这问题呢,其实只要把大于号、小于号转义即可

注解方式动态sql写法和注意事项

@Select({"<script>" +
            "select * from tb_examine" +
            "<where> 1 = 1" +
            "<if test = \" employeeId != null and  employeeId != '' \"> AND employee_id = #{employeeId} </if>" +
            "<if test = \" gradeId != null and gradeId != '' \"> AND grade_id = #{gradeId} </if>" +
            "<if test = \" year != null and year != '' \"> AND year like #{year} </if>" +
            "<if test = \" (statrMonth != null and statrMonth != '') and (endMonth == null or endMonth == '') \"> AND month &gt;= #{statrMonth} </if>" +
            "<if test = \" (statrMonth == null or  statrMonth == '') and (endMonth != null and endMonth != '')   \"> AND month &lt;= #{endMonth} </if>" +
            "<if test = \" (statrMonth != null and statrMonth != '') and (endMonth != null and endMonth != '')   \">AND month &gt;= #{statrMonth} AND month &lt;= #{endMonth}  </if>" +
            "</where>" +
            "</script>"})
public List<Examine> getName(Examine examine);

判断字符串为空串 用单引号

大于等于用

小于等于用

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Spring JPA之find拓展方法示例详解

    Spring JPA之find拓展方法示例详解

    这篇文章主要为大家介绍了Spring JPA之find拓展方法示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • Java中关于MouseWheelListener的鼠标滚轮事件详解

    Java中关于MouseWheelListener的鼠标滚轮事件详解

    这篇文章主要介绍了Java中关于MouseWheelListener的鼠标滚轮事件详解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • Hadoop源码分析四远程debug调试

    Hadoop源码分析四远程debug调试

    本篇是Hadoop源码分析系列文章第四篇,主要介绍一下Hadoop的远程debug调试步骤,后续本系列文章会持续更新,有需要的朋友可以借鉴参考下
    2021-09-09
  • Springboot接口项目如何使用AOP记录日志

    Springboot接口项目如何使用AOP记录日志

    这篇文章主要介绍了Springboot接口项目如何使用AOP记录日志,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • 关于JDK15的新特性之TextBlocks文本块的引入和使用

    关于JDK15的新特性之TextBlocks文本块的引入和使用

    这篇文章主要介绍了关于JDK15的新特性之文本块的引入和使用,如果具有一种语言学机制,可以比多行文字更直观地表示字符串,而且可以跨越多行,而且不会出现转义的视觉混乱,那么这将提高广泛Java类程序的可读性和可写性,需要的朋友可以参考下
    2023-07-07
  • SpringBoot框架aop切面的execution表达式解读

    SpringBoot框架aop切面的execution表达式解读

    这篇文章主要介绍了SpringBoot框架aop切面的execution表达式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • 记一次springboot服务凌晨无故宕机问题的解决

    记一次springboot服务凌晨无故宕机问题的解决

    这篇文章主要介绍了记一次springboot服务凌晨无故宕机问题的解决,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • java io读取文件操作代码实例

    java io读取文件操作代码实例

    这篇文章主要介绍了java io读取文件操作代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • B/S与C/S架构的区别介绍

    B/S与C/S架构的区别介绍

    本文详细讲解了B/S与C/S架构的区别,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-12-12
  • Springboot整合RabbitMq测试TTL的方法详解

    Springboot整合RabbitMq测试TTL的方法详解

    这篇文章主要介绍了Springboot整合RabbitMq测试TTL的设置,设置TTL一般由两种设置方法,设置整个队列的过期时间另一种设置单个消息的过期时间,通过示例图文相结合给大家介绍的非常详细,需要的朋友可以参考下
    2022-03-03

最新评论