mybatisplus无法模糊查询null
时间: 2024-09-30 22:07:30 浏览: 38
MyBatisPlus是一个基于MyBatis的简化、增强工具,它提供了一些便捷的功能,包括ORM映射、CRUD操作等。在使用模糊查询时,如果你尝试查询某个字段值为null的数据,MyBatisPlus默认不会包含null值的结果。这是因为MyBatisPlus默认遵循的是`like '%?%'`这样的模式,这个表达式会匹配所有非空字符串。
如果你想要查询包含null值的数据,可以采取以下几种方式:
1. 使用SQL自定义查询:直接在Mapper XML文件或Repository接口中编写SQL语句,如`select * from table where column is null or column like '%null%'`。
2. 利用IQuery对象:MyBatisPlus提供了IQuery对象,你可以通过设置其`eq()`方法为null,然后使用`or`方法添加模糊查询条件。
```java
IQuery<T> query = IQuery.create().eq("column", null).or.like("column", "%null%");
List<T> results = baseMapper.selectList(query);
```
3. 创建一个实体类属性对应的枚举类型,并在查询时使用该枚举的NULL值:
```java
public enum ColumnValue {
NOT_NULL,
NULL;
}
@Query("select * from table where column = #{value}")
List<T> findByColumn(ColumnValue value);
```
记得在实际应用中检查数据是否存在null后再进行操作,以避免潜在的NPE。
阅读全文