mybatils-plus 的 lambdaQuery 怎么使用不等于
时间: 2025-06-25 10:24:40 浏览: 7
<think>嗯,用户想知道MyBatis-Plus中lambdaQuery怎么用不等于条件。我之前用过LambdaQueryWrapper,可能需要回忆一下具体的语法。首先,LambdaQueryWrapper允许用Lambda表达式来构建查询条件,这样比较类型安全,不会因为字段名写错出问题。
那不等于条件应该对应ne方法吧?比如,假设有一个User实体类,有name字段,想查名字不等于"John"的记录。应该用User::getName,然后调用ne方法,传入"John"。这样生成的SQL应该是where name != 'John'。
不过要确认一下方法名是否正确,是不是ne或者neq。可能需要查一下文档或者之前用过的例子。记得MyBatis-Plus中常用的方法有eq(等于)、ne(不等于)、gt(大于)、lt(小于)等等。所以ne应该是对的。
然后,示例代码的话,可能需要先创建LambdaQueryWrapper对象,然后链式调用ne方法。比如:
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.ne(User::getName, "John");
List<User> users = userMapper.selectList(wrapper);
这样应该可以了。另外,用户可能还需要知道如何组合多个条件,比如同时不等于多个值,或者与其他条件一起使用。例如,ne方法是否支持多个参数,或者是否需要多次调用ne方法。但根据经验,每个ne应该对应一个条件,多个不等于条件需要用and或or连接。
比如,想查名字不是"John"且年龄不等于25的用户:
wrapper.ne(User::getName, "John")
.ne(User::getAge, 25);
这样生成的SQL应该是where name != 'John' AND age != 25。
另外,可能还需要注意null值的处理。如果某个字段可能为null,使用ne的时候会不会包含null的情况?在SQL中,null的判断需要用is null或者is not null,而普通的!=不会包含null。所以如果需要同时排除某个值和null,可能需要额外加上isNotNull条件。
比如,查名字不是"John"且name字段不为null:
wrapper.ne(User::getName, "John")
.isNotNull(User::getName);
这样生成的SQL就是name != 'John' AND name IS NOT NULL。
还有,用户可能想知道除了ne之外,是否还有其他方式实现不等于,比如使用条件构造器的其他方法,或者通过自定义SQL片段。但通常来说,ne是最直接的方式。
此外,MyBatis-Plus的版本兼容性也很重要,需要确认用户使用的版本是否支持lambda表达式。根据引用[^1],3.x及以上版本都支持,所以如果用户用的是旧版本可能需要升级。
总结一下,回答应该包括使用ne方法的示例,组合条件的情况,以及处理null值的注意事项。同时要提到版本要求和可能的常见问题,比如链式调用的写法,方法引用的正确使用等。</think>在 MyBatis-Plus 中,使用 `LambdaQueryWrapper` 实现不等于条件的核心方法是 `.ne()`。以下是具体用法说明和示例:
### 一、基础用法
通过 `ne(字段方法引用, 比较值)` 方法实现不等于条件:
```java
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
// 查询 status 不等于 1 的记录
wrapper.ne(User::getStatus, 1);
List<User> list = userMapper.selectList(wrapper);
```
生成的 SQL:
```sql
WHERE status != 1
```
### 二、组合条件
可链式调用多个条件:
```java
wrapper.ne(User::getRole, "admin")
.gt(User::getAge, 18); // 附加年龄大于18的条件
```
对应 SQL:
```sql
WHERE role != 'admin' AND age > 18
```
### 三、空值处理
需注意字段为 `null` 时的特殊处理:
```java
wrapper.ne(User::getEmail, "[email protected]")
.isNotNull(User::getEmail); // 排除 email 为 null 的记录
```
对应 SQL:
```sql
WHERE email != '[email protected]' AND email IS NOT NULL
```
### 四、动态条件
结合判断语句实现动态条件:
```java
if (excludeDeleted) {
wrapper.ne(User::getDeleted, 1); // 动态排除已删除数据
}
```
### 五、版本要求
需使用 MyBatis-Plus 3.x 及以上版本,并正确导入 Lambda 表达式相关依赖。
### 六、与其他查询联用
可与 `.eq()`、`.like()` 等方法组合:
```java
wrapper.eq(User::getDepartment, "IT")
.ne(User::getTitle, "Intern");
```
阅读全文
相关推荐

















