mybatis-plus having用法
时间: 2023-07-18 18:41:47 浏览: 694
MyBatis-Plus的`having`用法是用于对查询结果进行分组后再进行条件筛选,用于对分组结果进行过滤。
下面是一个示例:
```java
QueryWrapper<User> wrapper = new QueryWrapper<User>()
.select("age", "count(*) as total")
.groupBy("age")
.having("count(*) > {0}", 2);
List<User> userList = userMapper.selectList(wrapper);
```
上述代码表示对`User`表按照`age`字段进行分组,然后对分组后的结果进行筛选,只保留`count(*)`大于2的分组结果。
其中,`having`方法的第一个参数是条件表达式,第二个参数是条件占位符的值。在条件表达式中,可以使用`count(*)`、`sum(*)`、`avg(*)`等聚合函数以及分组字段来进行筛选。
相关问题
mybatis-plus删除数据库中保存重复的数据
你可以使用 MyBatis-Plus 提供的 Wrapper 来实现删除数据库中保存重复的数据。具体步骤如下:
1. 首先,定义一个实体类,并使用 MyBatis-Plus 提供的注解 @TableName 指定对应的数据库表名。例如:
```java
@TableName("user")
public class User {
// 省略其他属性和方法
}
```
2. 然后,创建一个 Wrapper 对象,使用 MyBatis-Plus 提供的方法进行条件查询。例如:
```java
Wrapper<User> wrapper = new QueryWrapper<User>()
.groupBy("name, age, gender")
.having("count(*) > 1");
List<User> duplicatedUsers = userMapper.selectList(wrapper);
```
这段代码会查询出数据库中所有重复的用户数据。
3. 最后,使用 MyBatis-Plus 提供的方法进行删除操作。例如:
```java
Wrapper<User> wrapper = new QueryWrapper<User>()
.groupBy("name, age, gender")
.having("count(*) > 1");
userMapper.delete(wrapper);
```
这段代码会删除数据库中所有重复的用户数据。
注意:在上面的代码中,我们使用了 groupBy 和 having 条件来查询重复数据。具体的查询条件需要根据你的实际情况进行调整。
MyBatis plus中的QuarryWrapper
QueryWrapper是MyBatis Plus提供的一个查询构造器,用于构建SQL查询条件。可以通过QueryWrapper的方法链式调用来设置查询条件,例如eq、ne、gt、ge、lt、le、like、notLike、in、notIn等方法。QueryWrapper还提供了一些其他方法,如select、orderBy、groupBy、having等,用于设置查询的其他参数。使用QueryWrapper可以方便地构建复杂的SQL查询条件,提高开发效率。同时,QueryWrapper还支持Lambda表达式,可以通过Lambda表达式来构建查询条件,使得代码更加简洁易懂。
阅读全文