mybatis-plus下划线自动转驼峰

发布时间 2023-08-25 11:35:33作者: 悲伤往事
/**
 * <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());
    }
}