使用LambdaQueryWrapper来模糊查询处理Integer数据如何解决
时间: 2023-10-13 10:09:04 浏览: 105
LambdaQueryWrapper是一个用于构建Mybatis-Plus中查询条件的工具类,它默认只支持字符串类型的模糊查询。如果需要处理Integer类型的模糊查询,可以使用Mybatis-Plus中提供的自定义SQL语句来实现。
例如,我们可以使用自定义SQL语句来实现对Integer类型的模糊查询:
```java
LambdaQueryWrapper<Entity> wrapper = new LambdaQueryWrapper<>();
wrapper.apply("CAST(integer_field AS CHAR) LIKE CONCAT('%', {0}, '%')", keyword);
```
上面的代码中,我们使用了apply方法来添加自定义SQL语句,并将Integer类型的字段转换为字符串类型进行模糊查询。其中,{0}表示占位符,需要使用第二个参数keyword来替换。
需要注意的是,使用自定义SQL语句可能会影响查询性能,因此在实际项目中需要根据具体情况进行选择。
相关问题
LambdaQueryWrapper可以查询list么
是的,LambdaQueryWrapper可以查询List。你可以使用LambdaQueryWrapper的in方法,将List作为参数传递给它,以查询包含在List中的数据。例如:
```
List<Integer> ids = Arrays.asList(1,2,3);
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.in(User::getId, ids);
List<User> userList = userService.list(wrapper);
```
这个例子中,我们使用LambdaQueryWrapper查询id为1、2、3的用户信息,其中ids是一个包含1、2、3的List。
LambdaQueryWrapper not in 子查询
如果要使用 LambdaQueryWrapper 进行 not in 子查询,可以先使用 LambdaQueryWrapper 查询出子查询的结果集,然后再使用 notIn 方法。例如:
```java
LambdaQueryWrapper<User> subWrapper = new LambdaQueryWrapper<>();
subWrapper.select(User::getId).eq(User::getDeptId, 1);
List<Integer> subList = userMapper.selectObjs(subWrapper);
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.notIn(User::getId, subList);
List<User> userList = userMapper.selectList(wrapper);
```
上述代码中,先使用 LambdaQueryWrapper 查询出 User 表中 deptId 为 1 的记录的 id 列表,然后再使用 notIn 方法查询不在这个列表中的记录。这样就可以使用 LambdaQueryWrapper 进行 not in 子查询了。
阅读全文