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

转载请标明出处!

你可能感兴趣的:(java,mybatis,mybatis,java)