springboot中mybatis夸库查询可配置
项目需求mybatis中有的sql是跨库去查询的,
假如现有 测试数据库A_test 表user 那么查询的sql为:
select * from A_test.user
如果 切换到生产数据库 A_prod 表user 那么查询的sql为:
select * from A_prod.user
在只写一套sql的前提下,保证业务的独立,复用性,一般做法: 1.如果使用了框架mybatis 可以在配置文件里面加入
mybatis.configuration.variables.databaseName=A_test
YAML格式:
select * from ${databaseName}.user
2.如果不使用mybatis,我们可以定义一个常量,实现动态切换。
package com.easyu.security.service;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class MybatisConstant {
public static String db1 = "`A_test`";
public static String getDb1() {
return db1;
}
@Value("${my.project.databaseName:A_test}")
public static void setDb1(String db1) {
MybatisConstant.db1 = db1;
}
}
定义好了之后,mybatis写法为:
selcet * from #{@com.easyu.security.service.MybatisConstant@db1}.user
可以根据配置文件的去实现sql的动态切换库名,成功解决了test/prod的切换问题,测试生产一套sql。完美解决
