mybatis plus 如何做,当字段不为空,执行查询,否则不执行
时间: 2024-09-11 15:08:53 浏览: 78
MyBatis Plus 是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。在 MyBatis Plus 中,如果你希望在字段不为空时执行查询,否则不执行,可以使用其提供的动态 SQL 功能。以下是几种常见的实现方式:
1. 使用 `QueryWrapper` 构建动态查询条件:
```java
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
// 创建查询条件封装器
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
// 假设有一个字段名为 "name",你希望当它不为空时才进行查询
String name = "张三";
if (name != null && !name.trim().isEmpty()) {
queryWrapper.like("name", name);
}
// 使用查询条件执行查询操作
List<User> users = userMapper.selectList(queryWrapper);
```
2. 使用 `LambdaQueryWrapper` 构建动态查询条件(更直观的泛型写法):
```java
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
// 创建Lambda查询条件封装器
LambdaQueryWrapper<User> lambdaQueryWrapper = Wrappers.lambdaQuery();
// 同样以 "name" 字段为例
String name = "张三";
if (name != null && !name.trim().isEmpty()) {
lambdaQueryWrapper.like(User::getName, name);
}
// 使用查询条件执行查询操作
List<User> users = userMapper.selectList(lambdaQueryWrapper);
```
3. 使用 XML 方式定义 SQL,利用 MyBatis 的 `<if>` 标签进行条件判断:
```xml
<select id="selectByName" resultType="User">
SELECT * FROM user
<where>
<if test="name != null and name != ''">
AND name LIKE CONCAT('%', #{name}, '%')
</if>
</where>
</select>
```
然后在 Mapper 接口中定义方法并使用注解来指定上面的 XML 映射:
```java
public interface UserMapper extends BaseMapper<User> {
@Select("selectByName")
List<User> selectByName(@Param("name") String name);
}
```
使用时直接调用该方法即可。
阅读全文