MyBatis-Plus 里想查某个字段不等于某个值的记录,直接用 QueryWrapper 的 ne 方法就行。原理上它就是个条件构造器,调用 ne 的时候告诉它字段名和要排除的值,背后给你拼出 age <> ? 这种片段。
最常见的一个场景:查年龄不等于 18 的用户。代码差不多是这样:
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import java.util.List;
public class QueryDemo {
static class User {
private Long id;
private String name;
private Integer age;
// 省略 getter/setter
}
interface UserMapper {
List<User> selectList(QueryWrapper<User> wrapper);
}
public static void main(String[] args) {
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.ne("age", 18); // 核心就是这个 ne
UserMapper userMapper = new UserMapper() {
@Override
public List<User> selectList(QueryWrapper<User> wrapper) {
System.out.println("生成的SQL条件: " + wrapper.getSqlSegment());
return List.of();
}
};
List<User> users = userMapper.selectList(queryWrapper);
System.out.println("查询结果数量: " + users.size());
}
}
上面的示例里直接打印了 wrapper.getSqlSegment(),能看到生成的 SQL 条件片段就是 age <> ?,参数绑定 {age=18}。具体用的是 <> 还是 != 取决于数据库方言,MyBatis-Plus 会自动转,实际效果没差别。

参数通过预编译传进去的,不用额外操心注入问题。
项目里记得把依赖加上,pom.xml 里放 mybatis-plus-core,3.5.3.1 版本:
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-core</artifactId>
<version>3.5.3.1</version>
</dependency>
实际写的时候有几个地方容易绕一下。字段名一定得是数据库列名,不是 Java 的属性名。比如表里列叫 age,ne 的第一个参数就是 "age",别不小心写成实体类的字段名。值可以传基本类型 int,也可以用 Integer 包装类,都能正常处理。
ne 还能和其他条件方法自由组合,像 eq、gt 这些,链式调用拼出更复杂的查询条件,这块 QueryWrapper 本来设计得就很灵活。
跑一下上面的 main 方法,控制台输出的就是生成的 SQL 条件,跟预期一样,没什么花头。
来此加密不仅支持标准的域名加密,还提供了稀缺的IP证书申请。这对于一些直接通过IP地址提供服务的特殊场景具有重要意义。通过平台提供的HTTP代理自动验证方案,用户可以在不改变现有网络架构的前提下,快速完成IP地址的身份验证并获取证书。