mybatis中的if-else及if嵌套使用方式

目录
  • if-else及if嵌套使用方式
    • 案例一:if-else
    • 案例二:if嵌套
  • mybatis if-else写法

if-else及if嵌套使用方式

案例一:if-else

在使用mybatis mapper 动态sql时,不免会出现if-else的使用,但是好像又没有这种语法,提供的是choose标签代替if-else

例如:

select * from t_stu t
<where>
    <choose>
        <when test="query == 0">
            and t.status = 1 
        </when>
        <otherwise>
                and t.status  NOT IN (9,5)
        </otherwise>
    </choose>
    and t.delete_status = 1
</where>

也可以用多个if判断实现:

select * from t_stu t
<where>
    <if test="query == 0">
        and t.status = 1 
    </if>
    <if test="query != 0">
        and t.status  NOT IN (9,5)
    </if>
    and t.delete_status = 1
</where>

案例二:if嵌套

在实际编码过程中会有一些判断条件会一直重复使用,一直写在if标签中写的代码会特长,而且臃肿

select * from t_stu t
<where>
    <if test="query == 0 and type = 1">
        and t.type = 'we' and t.delete = 1
    </if>
    <if test="query == 0 and type = 2">
        and t.type = 'wq' and t.delete = 1
    </if>
    <if test="query == 0 and type = 3">
        and t.type = 'wr' and t.delete = 1
    </if>
</where>

变现后:

select * from t_stu t
<where>
    <if test="query == 0">
        <if test="type = 1">
            and t.type = 'we'
        </if>
         <if test="type = 2">
            and t.type = 'wq'
        </if>
        <if test="type = 3">
            and t.type = 'wr'
        </if>
    </if>
    and t.delete = 1
</where>

mybatis if-else写法

mybaits中没有else要用chose when otherwise代替

<choose>
    <when test="">
        //...
    </when>
    <otherwise>
        //...
    </otherwise>
</choose>

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

(0)

相关推荐

  • 关于mybatis if else if 条件判断SQL片段表达式取值和拼接问题

    前言 最近在开发项目的时候涉及到复杂的动态条件查询,但是mybaits本身不支持if elseif类似的判断但是我们可以间接通过 chose when otherwise 去实现其中choose为一个整体 when是if otherwise是else 快速使用 以前我们进行条件判断时候使用if标签进行判断,条件并列存在 <if test="seat_no != null and seat_no != '' "> AND seat_no = #{seat_no} </i

  • 在mybatis 中使用if else 进行判断的操作

    我就废话不多说了,大家还是直接看代码吧~ <!-- 查询物品的id --> <select id="checkItemsId" parameterType="pd" resultType="java.lang.Integer"> SELECT i.itemsid FROM pq_goods_items i <where> <!--方式一使用choose的方式查询--> <!-- <cho

  • mybatis中的多重if 条件判断

    目录 mybatis多重if条件判断 要注意的是 mybatis常用判断语法(标签) 1.if判断 2.choose判断 mybatis 多重if 条件判断 要注意的是 当指定某种情况的时候,条件需要添加 toString() 方法 mybatis常用判断语法(标签) 作为java开发,我们常用的判断有if.switch语句,其实在MyBatis中也有对应的标签,用于动态生成sql语句. 1. if判断 <where>     <if test="null != statusC

  • 详解MyBatis中主键回填的两种实现方式

    主键回填其实是一个非常常见的需求,特别是在数据添加的过程中,我们经常需要添加完数据之后,需要获取刚刚添加的数据 id,无论是 Jdbc 还是各种各样的数据库框架都对此提供了相关的支持,本文我就来和和大家分享下数据库主键回填在 MyBatis 中的两种实现思路. 原生写法 框架来源于我们学过的基础知识,主键回填实际上是一个在 JDBC 中就被支持的写法,有的小伙伴可能不知道这一点,因此这里我先来说说在 JDBC 中如何实现主键回填. JDBC 中实现主键回填其实非常容易,主要是在构造 Prepar

  • Mybatis中resultMap标签和sql标签的设置方式

    目录 resultMap标签和sql标签的设置 1.项目目录 2.数据库中的表的信息 3.配置文件的信息 4.User类 5.IUserDao接口 6.MybatisTest 7.运行结果 resultMap标签的使用规则 自定义结果映射规则 association联合查询 使用association进行分布查询 collection分步查询 resultMap标签和sql标签的设置 1.项目目录 2.数据库中的表的信息 3.配置文件的信息 1.SqlMapConfig.xml文件 <?xml

  • Mybatis中<if>和<choose>的区别及“=”判断方式

    目录 <if>和<choose>的区别及“=”判断 正确很好的写法需要引入<choose>标签 <!--错误的写法--> Mybatis选择choose和条件if用法 choose用法 if用法 <if>和<choose>的区别及“=”判断 在项目中xml文件经常会遇到在判断等于某个值时加什么条件不等于某个值的时候加什么条件 比如下面这个例子: <if  test=" name != null">   

  • Mybatis中#{}与${}的区别详解

    前言 在开发中使用Mybatis经常使用到#{}与${},依旧有很多开发者对二者的使用不是很清晰,正所谓好记性不如烂笔头,特此总结一下. 在mybatis中动态 sql 是其主要特性之一,在 mapper 中定义的参数传到 xml 中之后,在执行操作之前 mybatis 会对其进行动态解析.mybatis 提供了两种支持动态 sql 的语法:#{} 以及 $ { }, 其最大的区别则是前者方式能够很大程度防止sql注入(安全),后者方式无法防止Sql注入 .什么??不懂什么是Sql注入?额...

  • 解决mybatis 中collection嵌套collection引发的bug

    我就废话不多说了,大家还是直接看代码吧~ <resultMap id="ParentMap" type="org.example.mybatis.Parent"> <id column="Id" jdbcType="VARCHAR" property="id" /> <result column="Name" jdbcType="VARCHAR&q

  • Mybatis中连接查询和嵌套查询实例代码

    首先在mysql中确立表: #表一:地址国家表 CREATE TABLE address(aid INT AUTO_INCREMENT PRIMARY KEY,aname VARCHAR(20)); INSERT INTO address VALUES(NULL,"魏国"); INSERT INTO address VALUES(NULL,"蜀国"); INSERT INTO address VALUES(NULL,"吴国"); #表二:出场人物

  • 解决Mybatis中foreach嵌套使用if标签对象取值的问题

    目录 foreach嵌套使用if标签对象取值问题 大体格式 解决办法 代码如下 Mybatis if 语句嵌套 要求 foreach嵌套使用if标签对象取值问题 最近做项目过程中,涉及到需要在 Mybatis 中 使用 foreach 进行循环读取传入的查询条件,动态拼接SQL语句,接口传入的查询条件格式:{"advanceSearchList":[{"searchType":10,"searchText":"12"}]} ,

  • 在Mybatis中association标签多层嵌套的问题

    目录 association标签多层嵌套问题 排查 从代码上看没有什么问题 正常代码如下 association集合嵌套 这个返回集合有什么用呢 association标签多层嵌套问题 mybatis里查询使用嵌套association标签时,发现内层的association查询的结果一直为null 排查 检查sql执行情况,发现有数据返回,排除 检查property的值是否和pojo中的对应,值一致,排除 检查column的值是否和数据库的相对应,相对应,排除 那么应该是mybatis没有把数

  • MyBatis中一对多的xml配置方式(嵌套查询/嵌套结果)

    目录 MyBatis一对多的xml配置 嵌套查询 嵌套结果 一对多关联查询xml配置写法 情景概述 创建表 对应javaPojo 查询客户表client获取客户名下的附件信息 查询客户附件表client_file获取附件所属的客户信息 小结一下 MyBatis一对多的xml配置 用的是window上面的画图板,没法以文字的方式展示出来,见谅 嵌套查询 嵌套结果 一对多关联查询xml配置写法 情景概述 1.有一张客户表 Client ,存储客户信息, 姓名 name ,年龄 age等. 2.有一张

  • mybatis中的if-else及if嵌套使用方式

    目录 if-else及if嵌套使用方式 案例一:if-else 案例二:if嵌套 mybatis if-else写法 if-else及if嵌套使用方式 案例一:if-else 在使用mybatis mapper 动态sql时,不免会出现if-else的使用,但是好像又没有这种语法,提供的是choose标签代替if-else 例如: select * from t_stu t <where>     <choose>         <when test="query

随机推荐