Mybatis-flex配置全局参数

第一次使用springboot整合mybatis-flex,想配置一下常规配置比如不打印banner,修改数据库的方言(默认是mysql),开启或关闭二级缓存(默认开启),不打印sql日志等等,然后在application.yaml中配置都不起作用,最后看了一下源码 ,可以在使用@Configuration配置,现在记录一下:

package com.chhuang.web.config;

import com.chhuang.core.config.UUIDKeyGenerator;
import com.mybatisflex.core.FlexGlobalConfig;
import com.mybatisflex.core.audit.AuditManager;
import com.mybatisflex.core.dialect.DbType;
import com.mybatisflex.core.keygen.KeyGeneratorFactory;
import com.mybatisflex.core.mybatis.FlexConfiguration;
import com.mybatisflex.spring.boot.ConfigurationCustomizer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Configuration;

/**
 *
 * @Description MyBatisFlex配置 注册自定义主键 审计 缓存 SQL日志打印
 * @Author Darren Huang
 * @Date 2023-05-11 8:37
 */
@Configuration
public class MyBatisFlexConfiguration implements ConfigurationCustomizer {
    private static final Logger logger = LoggerFactory.getLogger("mybatis-flex-sql");

    public MyBatisFlexConfiguration() {
        //配置mybatis-flex全局配置
        FlexGlobalConfig defaultConfig = FlexGlobalConfig.getDefaultConfig();
        defaultConfig.setPrintBanner(false);//不打印banner
        defaultConfig.setDbType(DbType.POSTGRE_SQL);//数据库方言

        //注册自定义主键
        KeyGeneratorFactory.register("uuid", new UUIDKeyGenerator());

        //开启审计功能
        AuditManager.setAuditEnable(true);

        //设置 SQL 审计收集器
        AuditManager.setMessageCollector(auditMessage ->
                logger.info("{},{}ms", auditMessage.getFullSql(), auditMessage.getElapsedTime())
        );
    }

    /**
     * 自定义的FlexConfiguration配置
     * @param flexConfiguration
     */
    @Override
    public void customize(FlexConfiguration flexConfiguration) {
//        flexConfiguration.setCacheEnabled(false);//开启或关闭mybatis二级缓存
//        flexConfiguration.setLogImpl(NoLoggingImpl.class);//是否打印sql日志 StdOutImpl.class打印日志  NoLoggingImpl.class不打日志
    }
}

解释一下,FlexGlobalConfig是全局的配置参数,可以通过获取默认配置参数来修改FlexGlobalConfig.getDefaultConfig()。

FlexConfiguration的配置参数可以通过实现ConfigurationCustomizer接口的customize()自定义方法来修改。

然后还配置了数据库主键id的uuid方法,默认KeyType没有uuid的功能,要自己写。然后就是开启审计可以打印出sql执行了多少时间。

其实配置请大家自己参考源码,官网文档有点少,而且也不是很新。

另外官网上表示写好一个account实体类会自动生成一个ACCOUNT类直接用,其实生成的ACCOUNT是在Table类中,要用Table.ACCOUNT才能用,还是看源码比文档正确。

Flex很不错,加油

你可能感兴趣的:(mybatis,spring,boot,java)