Skip to content

如何配置xbatis启动配置 和 全局配置

如果在xbatis启动前配置xbatis的全局配置或者执行配置?

1.配置XbatisConfig的ConfigurationCustomizer的Bean(推荐)

java
@Configuration
public class XbatisConfig {

    @Bean
    public ConfigurationCustomizer configurationCustomizer() {
        return (configuration) -> {
            //启动配置都写在这
            ....
            //例如 XbatisGlobalConfig.setXXXX(xxx)
        };
    }
}

2. Xbatis 全局配置

2.1 Xbatis 全局插入insert监听器

java
@Configuration
public class XbatisConfig {

    @Bean
    public ConfigurationCustomizer configurationCustomizer() {
        return (configuration) -> {
            XbatisGlobalConfig.setGlobalOnInsertListener(o ->{
                    //处理业务逻辑
            });
        };
    }
}

2.2 Xbatis 全局更新update监听器

java
@Configuration
public class XbatisConfig {

    @Bean
    public ConfigurationCustomizer configurationCustomizer() {
        return (configuration) -> {
            XbatisGlobalConfig.setGlobalOnUpdateListener(o ->{
                    //处理业务逻辑
            });
        };
    }
}

2.3 Xbatis 全局设置数据大小写规则(全大写;SQL会前大写)

java
@Configuration
public class XbatisConfig {

    @Bean
    public ConfigurationCustomizer configurationCustomizer() {
        return (configuration) -> {
            XbatisGlobalConfig.setDatabaseCaseRule(DatabaseCaseRule.UPPERCASE);
        };
    }
}

2.3 Xbatis 全局设置逻辑删除开关(这里是关闭逻辑删除)

java
@Configuration
public class XbatisConfig {

    @Bean
    public ConfigurationCustomizer configurationCustomizer() {
        return (configuration) -> {
            XbatisGlobalConfig.setLogicDeleteSwitch(false);
        };
    }
}

2.4 Xbatis 全局配置动态值(用于默认动态值或者其他注解上的动态值)

java
@Configuration
public class XbatisConfig {

    @Bean
    public ConfigurationCustomizer configurationCustomizer() {
        return (configuration) -> {
            XbatisGlobalConfig.setDynamicValue("{KEY}", (clazz,type) -> {
                if (type == LocalDateTime.class) {
                    return LocalDateTime.now();
                } else if (type == LocalDate.class) {
                    return LocalDate.now();
                } else if (type == Date.class) {
                    return new Date();
                } else if (type == Long.class) {
                    return System.currentTimeMillis();
                } else if (type == Integer.class) {
                    return (int) (System.currentTimeMillis() / 1000);
                }
                throw new RuntimeException("Inconsistent types");
            });
        };
    }
}