赞
踩
项目需求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。完美解决
转载请标明出处!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。