springboot中给mybatis添加全局变量

springboot中给mybatis添加全局变量

在springboot项目的开发中,有些场景是查询固定的数据库中的表,一般是这样写的
简单的根据用户id查询姓名的sql
可以看到以库名.表名这种方式虽然能实现需求,但是如果后面库的名字改了或者迁移到别的库的话,就要在每一个sql里面把库名改掉,非常麻烦。
我所用的方法是通过读取spring的配置文件(application.yml)的某个属性存入mybatis的全局变量中。再通过使用这个全局变量实现动态切库的功能。

一.普通的springboot项目

1.修改配置文件

首先在配置文件中加入以下配置:
在这里插入图片描述
configuration-properties下面可以添加多个全局变量,都是key:value的形式。
tips:如果使用的是mybatis-plus框架,则需要改成:
在这里插入图片描述

2.在sql语句中直接使用

sql语句的库名.表名直接可以替换为${key}.表名
在这里插入图片描述

二.使用了自定义sqlSession配置的springboot项目

在配置了自定义sqlsession的项目中,就不能在application.yml里添加全局变量了,不会生效!不会生效!不会生效!
自定义sqlsession配置就是类似这种:
在这里插入图片描述
我们需要找到注解类似@Bean(name = “SqlSessionFactory”)的那个方法,我这里是这个方法
在这里插入图片描述
然后在里面加上这三行

        Properties pro = new Properties();
        pro.setProperty("自定义的key","自定义的value");
        bean.setConfigurationProperties(pro);

就可以设置全局变量了,当然只针对配置里配置的范围生效
在这里插入图片描述

当然这样写是写死的值,下面演示把application里的值给拿进来:
首先在application.yml里定义了一个key:value
在这里插入图片描述
然后在配置类里注入spring的环境变量Environment
在这里插入图片描述
然后通过 environment.getProperty() 来获取applicaiton里的值
比如我这里想拿到这个db_app的值就要写成environment.getProperty(“constant.db_app”)

完整代码:

        Properties pro = new Properties();
        pro.setProperty("db_app",environment.getProperty("constant.db_app"));
        bean.setConfigurationProperties(pro);

最后在配置范围内的包下的sql里面就可以使用了
在这里插入图片描述

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值