/**
* <p>
* MybatisPlus配置
* </p>
*
* @author intest
* @since 2019-07-22
*/
@Slf4j
@Configuration
public class MybatisPlusConfig {
private final PermissionConfig permissionConfig;
@Autowired
public MybatisPlusConfig(PermissionConfig permissionConfig) {
this.permissionConfig = permissionConfig;
}
/**
* 分页插件
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
paginationInterceptor.setDbType(DbType.MYSQL);
// 设置请求的页面大于最大页后操作,true调回到首页,false 继续请求 默认false
paginationInterceptor.setOverflow(false);
// 设置最大单页限制数量,默认 500 条,-1 不受限制
paginationInterceptor.setLimit(-1);
// paginationInterceptor.setLimit(500);
// 开启 count 的 join 优化,只针对 left join !!!
paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true));
paginationInterceptor.setSqlParserList(createSqlParseList());
return paginationInterceptor;
}
private List<ISqlParser> createSqlParseList() {
List<ISqlParser> sqlParserList = new ArrayList<>();
List<PermissionRule> rules = permissionConfig.getRules();
if (rules != null && !rules.isEmpty()) {
rules.forEach(rule -> {
// 注册到缓存
rule.register();
if (rule.isEnable()) {
sqlParserList.add(new PermissionSqlParser(rule));
}
});
}
if (sqlParserList.isEmpty()) {
return Collections.emptyList();
}
return sqlParserList;
}
/**
* 自动填充插件
*/
@Bean
public MetaObjectHandler metaObjectHandler() {
return new MyMetaObjectHandler();
}
/**
* Map映射的驼峰转换
*/
@Bean
public ConfigurationCustomizer configurationCustomizer() {
return i -> i.setObjectWrapperFactory(new MybatisMapWrapperFactory());
}
}