Mybatisplus的queryWrapper对字段做函数处理
时间: 2023-12-16 21:02:57 浏览: 49
Mybatisplus的QueryWrapper支持通过lambda表达式对字段做函数处理,可以使用QueryWrapper的lambda表达式方法来实现。
例如,我们可以使用lambda表达式方法的方式查询用户表中年龄大于30岁的用户:
```java
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.lambda().gt(User::getAge, 30);
List<User> userList = userMapper.selectList(wrapper);
```
如果我们想要对年龄字段做函数处理,比如加上10,可以使用Lambda的apply方法:
```java
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.lambda().apply("age+10>{0}", 30); // age+10>30
List<User> userList = userMapper.selectList(wrapper);
```
在apply方法中,我们可以使用SQL语法对字段做各种函数处理,然后使用占位符的方式传递参数。需要注意的是,apply方法中的SQL语句不会被Mybatisplus自动处理,需要自己保证SQL的正确性。
相关问题
Mybatisplus的queryWrapper的or对字段做函数处理
Mybatis-plus的QueryWrapper中的or方法可以使用Lambda表达式对字段进行函数处理,例如:
```
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.or(i -> Functions.upper(i.getStr("name")).like("%" + keyword.toUpperCase() + "%"))
.or(i -> Functions.length(i.getStr("phone")).gt(10));
```
在这个示例中,我们使用了Lambda表达式对name字段执行了upper函数,对phone字段执行了length函数,并将它们分别放在了两个or方法中,表示或者的关系。这样就可以在查询时对字段进行函数处理了。
mybatisplus中LambdaQueryWrapper实现sum聚合函数
Mybatis-Plus中的LambdaQueryWrapper并不直接支持使用sum等求和的聚合函数。但是可以通过使用QueryWrapper来构建查询语句来实现。下面是一个简单的例子[^1]:
```java
Map<String, Object> map = getMap(new QueryWrapper<Order>()
.select("IFNULL(sum(total_amount),0) as totalPrice")
.between("create_time", DateUtils.getStartDate(date), DateUtils.getEndDate(date)));
BigDecimal sumCount = (BigDecimal) map.get("totalPrice");
```
在这个例子中,我们使用了QueryWrapper来构建查询语句,并使用select方法指定了要查询的字段,使用IFNULL函数来处理空值,使用sum函数来求和。最后,我们通过get方法获取到求和的结果。