<sql id="page_query_condition"> <where> <if test="status != null ">and status = #{status} </if> <if test="userType != null and userType == 'supplierSub'">and user_type = #{userType} </if> <if test="userType == null">and user_type != 'supplierSub' </if> <if test="userName != null ">and UPPER(user_name) like concat(UPPER(#{userName}),'%')</if> </where> </sql>
时间: 2024-04-26 16:22:05 浏览: 103
这是一个基于 MyBatis 框架的分页查询 SQL 片段,其 ID 为 `page_query_condition`。具体含义如下:
- `<where>` 标签用于指定 SQL 语句的查询条件,其中 `<if>` 标签用于根据参数动态生成查询条件。
- `test` 属性指定了参数的判断条件,比如 `status != null` 表示如果 `status` 参数不为 null,则生成查询条件 `and status = #{status}`。
- `#{status}` 是 MyBatis 的占位符,表示将 `status` 参数的值填充到 SQL 语句中。
- `<if test="userType != null and userType == 'supplierSub'">and user_type = #{userType} </if>` 表示如果 `userType` 参数不为 null 且等于 `supplierSub`,则生成查询条件 `and user_type = #{userType}`。
- `<if test="userType == null">and user_type != 'supplierSub' </if>` 表示如果 `userType` 参数为 null,则生成查询条件 `and user_type != 'supplierSub'`。
- `<if test="userName != null ">and UPPER(user_name) like concat(UPPER(#{userName}),'%')</if>` 表示如果 `userName` 参数不为 null,则生成查询条件 `and UPPER(user_name) like concat(UPPER(#{userName}),'%')`,其中 `UPPER()` 函数将 `user_name` 的值转换为大写,`concat()` 函数用于拼接字符串,`%` 表示任意字符。
该 SQL 片段中,根据参数动态生成了查询条件,从而实现了动态查询。在使用该 SQL 片段时,需要将其引用到需要分页查询的 SQL 语句中。
阅读全文