【转载】MyBatis-Plus XML中实现if-else条件判断的完整方案
在MyBatis-Plus开发中,XML动态SQL的条件判断是核心功能之一。本文将详细介绍如何使用<choose>、<when>、<otherwise>标签实现类似Java中if-else的逻辑控制,并提供完整的代码示例。
动态SQL条件判断实现
基础if条件判断
xml
复制
<if test="id != null"> AND id = #{id} </if>
if-else完整实现
使用<choose>、<when>、<otherwise>标签实现多条件分支:
xml
复制
<choose> <when test="name != null and name != ''"> AND name LIKE CONCAT('%', #{name}, '%') </when> <otherwise> AND name IS NOT NULL </otherwise> </choose>
多条件分支示例
xml
复制
<choose> <when test="age != null and age < 18"> AND age_group = 'minor' </when> <when test="age != null and age >= 18 and age < 60"> AND age_group = 'adult' </when> <when test="age != null and age >= 60"> AND age_group = 'senior' </when> <otherwise> AND age_group IS NULL </otherwise> </choose>
集合条件判断
xml
复制
<if test="statusList != null and statusList.size() > 0"> AND status IN <foreach collection="statusList" item="status" open="(" close=")" separator=","> #{status} </foreach> </if>
完整Mapper实现
Java
复制
package com.example.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.example.entity.User; import org.apache.ibatis.annotations.Param; import java.util.List; import java.util.Map; public interface UserMapper extends BaseMapper<User> { List<User> selectUsersByCondition( @Param("id") Long id, @Param("name") String name, @Param("age") Integer age, @Param("statusList") List<Integer> statusList ); }
关键技术要点
| 技术点 | 说明 |
|---|---|
<choose> |
相当于Java中的switch语句 |
<when> |
相当于case分支,使用OGNL表达式 |
<otherwise> |
相当于default分支 |
| 数值比较 | 直接使用< >等符号 |
| 字符串比较 | test="name == 'foo'.toString()" |
| 集合判断 | test="list != null and list.size() > 0" |
依赖配置
xml
复制
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <dependencies> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.3.1</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.28</version> </dependency> </dependencies> </project>
页面的所有内容均由人工智能模型生成,其生成内容的准确性和完整性无法保证,请仔细甄别
原文地址:
更多推荐




所有评论(0)