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。完美解决

经验分享 程序员 微信小程序 职场和发展