[MyBatis]-10 动态SQL _if _ where


prtyaa
prtyaa 2023-12-27 16:25:15 65082
分类专栏: 资讯

在我们实际开发过程中动态SQL的使用远多于静态是SQL(前面用的所有sql都是静态的,也就是一成不变的),而动态SQL是根据条件的不同,SQL语句也会随之动态的改变,

if

if 用于进行条件判断,

test属性用于指定判断条件. 为了拼接条件, 在 SQL 语句后强行添加 1=1 的恒成立条件.

但是会造成浪费资源等情况所以需要使用where标签来配合

where

where用于管理 where 子句.有如下功能:
a) 如果没有条件满足,不会生成 where 关键字。
b) 如果有条件满足, 会添加 where 关键字
c) 如果第一个条件中有 and,会自动去除and。

 

示例代码

<?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="selUser" resultType="User">
        select * from tb_user
        <!--where 用于配合if做where用于管理 
        where 子句.有如下功能:
            a) 如果没有条件满足,不会生成 where 关键字。
            b) 如果有条件满足, 会添加 where 关键字
            c) 如果第一个条件中有 and,会自动去除and。
     -->
        <where>
      <!--if 用于条件判断
        test 属性用于设定判断 类似于java中if后判断的条件
      -->
        <if test="username != null and username !=''">
            and username = #{username}
        </if>
        <if test="password != null and password !=''">
            and password = #{password}
        </if>
    </where>
    </select>
</mapper>

测试代码1:有参数情况

测试代码2:无参数情况

测试3:单一参数情况

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

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