如何配置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");
});
};
}
}