[MyBatis]-10 动态SQL _choose_when_otherwise


prtyaa
prtyaa 2023-12-27 16:24:54 62847
分类专栏: 资讯

<choose><when><otherwise>

这是一组标签 ,功能类似于 switch...case..

用这个标签就要注意了,因为where永远后面只有一个子句,也就是只有一个查询条件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 
	namespace: 命名空间, 可以随意定义, 一般情况下要写全限定路径
	MyBatis管理SQL语句是通过namespace+id来定位的
 -->
<mapper namespace="com.lin.mapper.UserMapper">
    
    <select id="selUser1" resultType="User">
        select * from tb_user
        <where>
            <choose>
                <when test="username != null and username !=''">
                    and username = #{username}
                </when>
                <when test="password != null and password !=''">
                    and password = #{password}
                </when>
                <otherwise>
                    and 1 = 1
                </otherwise>
            </choose>
        </where>
    </select>
</mapper>

测试1:没有参数 可以看到,直接使用了otherwise的条件

测试2:有账号密码 ,结果:只根据账号查询忽略后面的查询条件

测试3:只有密码 ,结果:查询出密码相同的用户

网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。

本文链接:https://www.xckfsq.com/news/show.html?id=31588
赞同 0
评论 0 条