数据库常用需求:
1、单数据源多类型数据库切换(可以支持mysql oracle dm等数据库的切换,不同的类型数据库扫描不同路径下的xml)
通过mybatisplus拦截器实现
sqlSessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(sql));
2、单数据源多数据库支持(在表名前面加上数据库schemal,查询的时候动态切换)
通过mybatisplus拦截器实现
DynamicTableInterceptor extends DynamicTableNameInnerInterceptor @Override protected String changeTable(String sql) { sql = sql.replaceAll("%schema%", schemaPrefix + GlobalVariable.myTableNameLocal.get()); return sql; }
3、多数据源支持(在数据库配置多个数据源,支持按照配置查询不同的数据源)
通过dynamic-datasource依赖实现
dynamic: primary: master # 设置主数据源 datasource: master: url: jdbc:postgresql://127.0.0.1:5432/dbname username: postgres password: 123456 driver-class-name: org.postgresql.Driver slave: url: jdbc:mysql://127.0.0.1:3306/dbname username: root password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver
4、创建人创建时间添加
通过mybatis拦截器实现
@Slf4j @Component @Intercepts({ @Signature(type = Executor.class, method = "update", args = { MappedStatement.class, Object.class }) }) public class MybatisInterceptor implements Interceptor {
通过mybatisplus实现
@Slf4j @Component public class AutoFillMetaObjectHandler implements MetaObjectHandler {