MyBatis Mapper中的if-else判断

本文将介绍在MyBatis的Mapper中,怎样编写if-else的条件判断语句。

在MyBatis的Mapper中是不支持if-else语句,如下:

if( condition ) {
    // ...
} else {
    // ...
}

我们可以通过choose(即Java的switch语句)语句来进行替换。choose语句的语法如下:

<choose>
    <when test="测试条件">
        你的SQL语句1
    </when>
    <otherwise>
        所有when都没有匹配的默认SQL语句
    </otherwise>
</choose>

其中:

  • when 表示一个if语句

  • otherwise 表示if语句的else语句

实例1:下面Mapper将批量插入用户信息,其中当name为空(null或'')时,插入‘-’符号。age为空时,插入0。代码如下:

<!--批量插入用户-->
<insert id="inserUsers" parameterType="java.util.List">
    insert into user(name, age)
    values
    <foreach collection="list" index="index" item="item" separator=",">
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <choose>
                <when test="item.name != null and item.name !=''">
                    #{item.name, jdbcType=VARCHAR},
                </when>
                <otherwise>
                    '-',
                </otherwise>
            </choose>
            <choose>
                <when test="item.age != null and item.age !=''">
                    #{item.age, jdbcType=INTEGER},
                </when>
                <otherwise>
                    0,
                </otherwise>
            </choose>
        </trim>
    </foreach>
</insert>

实例2:查询用户信息,如果指定了name查询条件,则使用name进行模糊查询(%name%);如果没有指定,则使用“Admin%”进行模糊查询。代码如下:

<result id="userMap" class="">
    ...
</result>
<select id="getUser" resultMap="userMap">
    select id, name, age  from user where del_flag=0
    <choose>
        <when test="name != null and name != '' ">
            and name like concat(concat('%', #{name}), '%')
        </when>
        <otherwise>
            and name like 'Admin%'
        </otherwise>
    </choose>
</select>

MyBatis的Mapper中的choose用法就这些,谢谢支持!!!

参考资料:

https://www.cnblogs.com/a8457013/p/8033263.html

点击学习 MyBatis 教程,了解更多的 MyBatis 知识!

学习,学习,再学习!学,然后知不足。 —— 列宁
2 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号