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中的逻辑。 

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

相关文章

  • MyBatis分页查询返回list的时候出现null的问题

    MyBatis分页查询返回list的时候出现null的问题

    这篇文章主要介绍了MyBatis分页查询返回list的时候出现null的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • 深入分析JAVA 多线程--interrupt()和线程终止方式

    深入分析JAVA 多线程--interrupt()和线程终止方式

    这篇文章主要介绍了JAVA 多线程--interrupt()和线程终止方式的的相关资料,文中代码非常细致,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-06-06
  • Spring Boot 通过AOP和自定义注解实现权限控制的方法

    Spring Boot 通过AOP和自定义注解实现权限控制的方法

    这篇文章主要介绍了Spring Boot 通过AOP和自定义注解实现权限控制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • mybatis返回map类型数据空值字段不显示的解决方案

    mybatis返回map类型数据空值字段不显示的解决方案

    这篇文章主要介绍了mybatis返回map类型数据空值字段不显示的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • java动态绑定和静态绑定用法实例详解

    java动态绑定和静态绑定用法实例详解

    这篇文章主要介绍了java动态绑定和静态绑定用法,结合实例形式详细分析了java动态绑定与静态绑定相关概念、原理、实现方法及使用注意事项,需要的朋友可以参考下
    2019-05-05
  • Java实现批量下载(打包成zip)的实现

    Java实现批量下载(打包成zip)的实现

    这篇文章主要介绍了Java实现批量下载(打包成zip)的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • Java 实战项目之学生信息管理系统的实现流程

    Java 实战项目之学生信息管理系统的实现流程

    读万卷书不如行万里路,只学书上的理论是远远不够的,只有在实战中才能获得能力的提升,本篇文章手把手带你用java+SSM+jsp+mysql+maven实现学生信息管理系统,大家可以在过程中查缺补漏,提升水平
    2021-11-11
  • SpringBoot实现扫码登录的项目实践

    SpringBoot实现扫码登录的项目实践

    本文主要介绍了SpringBoot实现扫码登录的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • Java实现新建有返回值的线程的示例详解

    Java实现新建有返回值的线程的示例详解

    本文主要介绍了一个Java多线程的例题,题目是:使用ThreadLocal管理一号和二号线程,分别存入100元,在三号线程中使用利用一号和二号的计算结果来算出账户的实际金额。感兴趣的可以了解一下
    2022-09-09
  • 浅谈IDEA中Maven配置问题全解决

    浅谈IDEA中Maven配置问题全解决

    这篇文章主要介绍了浅谈IDEA中Maven配置问题全解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07

最新评论