QueryWrapper的eqIfPresent方法
时间: 2024-08-16 15:08:27 浏览: 152
QueryWrapper是MyBatisPlus中的一种高级SQL构建工具,它提供了一种更简洁的方式来编写动态查询条件。`eqIfPresent`方法是一个条件判断式方法,其全称可能是"equal if present",它的作用是在当前对象存在某个属性值的情况下,才设置SQL的等于(=)条件。
当你有一个对象,你想将该对象的某些字段作为查询条件,如果这个字段有值,则添加到查询条件中,否则不会添加。例如:
```java
Map<String, Object> params = new HashMap<>();
User user = ...; // 用户对象
if (user.getAge() != null) {
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eqIfPresent("age", user.getAge()); // 如果user的age有值,就设置age = #{age}
List<User> users = userMapper.selectList(wrapper); // 使用wrapper构建的SQL进行查询
}
```
如果没有提供`getAge()`返回非null值,那么`eqIfPresent`方法就不会在SQL中生成对应的等价条件。
相关问题
QueryWrapper queryWrapper = new QueryWrapper<Urolfuser2>() QueryWrapper<Urolfuser2> queryWrapper = new QueryWrapper<>()区别
QueryWrapper queryWrapper = new QueryWrapper<Urolfuser2>() 和 QueryWrapper<Urolfuser2> queryWrapper = new QueryWrapper<>() 的区别在于泛型的位置不同。
1. QueryWrapper queryWrapper = new QueryWrapper<Urolfuser2>():
这种写法将泛型 Urolfuser2 直接放在了 QueryWrapper 类的尖括号内,表示创建一个 QueryWrapper 对象,并指定其泛型类型为 Urolfuser2。这种写法在 Java 7 之前是必须的,因为 Java 7 之前的版本不支持类型推断。
2. QueryWrapper<Urolfuser2> queryWrapper = new QueryWrapper<>():
这种写法使用了类型推断,省略了泛型类型 Urolfuser2 的指定。编译器会根据变量的声明类型 QueryWrapper<Urolfuser2> 推断出泛型类型为 Urolfuser2。这种写法在 Java 7 及以后的版本中支持。
总结:
两种写法的功能是相同的,都是创建一个 QueryWrapper 对象,并指定其泛型类型为 Urolfuser2。只是第二种写法利用了类型推断,使代码更加简洁。
设置QueryWrapper的方法
QueryWrapper 是 MyBatis-Plus 提供的一种查询条件封装器,可以方便地进行单表的 CRUD 操作。下面是设置 QueryWrapper 的方法:
1. 创建 QueryWrapper 对象
可以使用以下两种方式创建 QueryWrapper 对象:
```java
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
QueryWrapper<User> queryWrapper = Wrappers.query();
```
2. 设置查询条件
可以使用 QueryWrapper 对象提供的方法设置查询条件,例如:
```java
queryWrapper.eq("name", "Tom"); // 等于
queryWrapper.ne("age", 18); // 不等于
queryWrapper.gt("age", 18); // 大于
queryWrapper.ge("age", 18); // 大于等于
queryWrapper.lt("age", 18); // 小于
queryWrapper.le("age", 18); // 小于等于
queryWrapper.like("name", "Tom%"); // 模糊查询
queryWrapper.isNull("email"); // 判断字段是否为空
queryWrapper.isNotNull("email"); // 判断字段是否非空
queryWrapper.in("age", Arrays.asList(18, 20, 22)); // IN 查询
queryWrapper.notIn("age", Arrays.asList(18, 20, 22)); // NOT IN 查询
queryWrapper.between("age", 18, 22); // BETWEEN 查询
queryWrapper.notBetween("age", 18, 22); // NOT BETWEEN 查询
queryWrapper.groupBy("age"); // 分组查询
queryWrapper.having("sum(score)>60"); // 分组后的条件
queryWrapper.orderByAsc("age"); // 升序排序
queryWrapper.orderByDesc("age"); // 降序排序
```
3. 执行查询操作
然后可以使用 MyBatis-Plus 提供的 Service 层的方法进行查询操作,例如:
```java
List<User> userList = userService.list(queryWrapper);
```
阅读全文