mybatis中的多重if 条件判断

 更新时间:2022年03月11日 10:11:42   作者:入门小白  
这篇文章主要介绍了mybatis中的多重if 条件判断,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

mybatis 多重if 条件判断

要注意的是

当指定某种情况的时候,条件需要添加 toString() 方法

mybatis常用判断语法(标签)

作为java开发,我们常用的判断有if、switch语句,其实在MyBatis中也有对应的标签,用于动态生成sql语句。

if判断

<where>
    <if test="null != statusCode and 0 != statusCode">
        AND b.STATUS_CODE = #{statusCode, jdbcType=VARCHAR}
    </if>
</where>

一般来说,很多程序猿朋友会在<if>标签前增加WHERE 1=1语句,但其实只需要像上面代码中增加<where>标签包裹所有<if>语句,<if>内语句前面都有and或者or关键字就行:

  • MyBatis会自动判断所有条件不满足时,不添加where语句;
  • 如果有多判断语句,并且满足一个条件以上时,会把第一条满足的(如果第一条有and或者or关键字时)and或者or关键字删除;

choose判断

<choose>
    <when test="5 == queryType">
        CASE WHEN statusCode IN (1,6) THEN 1 ELSE 2 END,createTime DESC
    </when>
    <when test="1 != queryType and 9 != queryType">
        createTime DESC
    </when>
    <otherwise>
        <choose>
            <when test="null == orderType or 1 == orderType">
                auditTime
            </when>
            <when test="2 == orderType">
                downloadCount
            </when>
            <when test="3 == orderType">
                browseCount
            </when>
            <otherwise>
                is666Count
            </otherwise>
        </choose>
        <if test="null == orderMode or 1 == orderMode">
            DESC
        </if>
    </otherwise>
</choose>

上面的代码使用了标签嵌套特性,用于复杂条件判断。

choose判断跟if else语句作用相同,起到根据条件执行不同分支逻辑的作用。

而otherwise跟多个if else中最后一个else的作用相同,在以上条件都不满足时,执行otherwise中的逻辑。 

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

相关文章

  • java如何删除以逗号隔开的字符串中某一个值

    java如何删除以逗号隔开的字符串中某一个值

    这篇文章主要介绍了java如何删除以逗号隔开的字符串中某一个值,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • 使用java执行定时任务示例

    使用java执行定时任务示例

    这篇文章主要介绍了使用java执行定时任务示例,需要的朋友可以参考下
    2014-04-04
  • Spring Boot2.3 新特性分层JAR的使用

    Spring Boot2.3 新特性分层JAR的使用

    这篇文章主要介绍了Spring Boot2.3 新特性分层JAR的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • MyBatis超详细讲解如何实现分页功能

    MyBatis超详细讲解如何实现分页功能

    MyBatis-Plus 是一个 Mybatis 增强版工具,在 MyBatis 上扩充了其他功能没有改变其基本功能,为了简化开发提交效率而存在,本篇文章带用它实现分页功能
    2022-03-03
  • java打印菱形及直角和等腰三角形的方法

    java打印菱形及直角和等腰三角形的方法

    用Java输出菱形本身是一个比较简单的问题,这是Java初学者都要编写的一个算法,下面这篇文章主要给大家介绍了关于java打印菱形及直角和等腰三角形的方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • JVM中堆内存和栈内存的区别

    JVM中堆内存和栈内存的区别

    本文主要介绍了JVM中堆内存和栈内存的区别,具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • SpringBoot集成WebSocket遇到的问题及解决

    SpringBoot集成WebSocket遇到的问题及解决

    这篇文章主要介绍了SpringBoot集成WebSocket遇到的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。
    2023-07-07
  • springboot 使用logback启动报警报错的解决

    springboot 使用logback启动报警报错的解决

    这篇文章主要介绍了springboot 使用logback启动报警报错的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • Springboot项目中定时任务的四种实现方式详解

    Springboot项目中定时任务的四种实现方式详解

    Spring的@Scheduled注解是一种非常简单和便捷的实现定时任务的方式,通过在方法上添加@Scheduled注解,我们可以指定方法在特定的时间间隔或固定的时间点执行,本文给大家介绍Springboot项目中定时任务的四种实现方式,感兴趣的的朋友一起看看b
    2024-02-02
  • JAVA线程池原理实例详解

    JAVA线程池原理实例详解

    这篇文章主要介绍了JAVA线程池原理,结合实例形式详细分析了java线程池概念、原理、创建、使用方法及相关注意事项,需要的朋友可以参考下
    2019-03-03

最新评论