mybatis plus 3.x 去重
时间: 2024-09-10 12:02:59 浏览: 54
MyBatis Plus是一个基于MyBatis的ORM框架增强工具,它提供了一种简便的方式来操作数据库。对于去重,特别是在分页查询结果集中去除重复记录,MyBatis Plus 3.x 提供了简单的方法。
在MyBatis Plus中,可以使用`Duplicated去除`功能来去除查询结果中的重复项。这通常通过添加一个自定义的全局拦截器或者在Mapper方法上使用特定注解来实现。例如,你可以使用`@GlobalConfiguration.interceptor(MyInterceptor.class)`声明一个全局拦截器,并在其中定义处理去重的逻辑:
```java
public class MyInterceptor implements Interceptor {
@Override
public Object intercept(Invocation invocation) throws Throwable {
// 获取SQL Select语句
SQL sql = (SQL) invocation.getArgs()[0];
// 添加去重条件,假设我们想按某个字段id去重
if (sql.getSelectList().contains("DISTINCT")) {
return invocation.proceed();
} else {
String distinctColumn = "id"; // 替换为你需要去重的字段名
sql.distinct(distinctColumn);
}
return invocation.proceed();
}
// 其他interceptor方法...
}
```
或者,如果你只想在特定的查询操作中去重,可以在Mapper方法上使用`@Select`注解加上`distinct=true`:
```java
@Select("SELECT DISTINCT * FROM table WHERE condition")
List<T> selectDistinct(@Param("condition") String condition);
```
阅读全文