354 Star 901 Fork 420

hsweb企业后台管理基础框架/hsweb-framework

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

动态数据源模块

提供动态数据源支持功能,支持注解方式,编程方式动态切换数据源,支持事务中切换数据源,支持跨数据库事务

目前提供JTA实现,请看:hsweb-datasource-jta

example

表达式方式:

application.yml配置

hsweb:
    datasource:
        switcher:
           test: # 只是一个标识
              # 拦截类和方法的表达式
              expression: org.hswebframework.**.*Service.find*
              # 切换数据源
              data-source-id: read_db
              # 切换数据库 从3.0.8开始支持
              #database: db_001  # select * from db_001.s_user

编程方式:

  //切换到 id为mysql_read_01的数据源
  DataSourceHolder.switcher().use("mysql_read_01");
  // ....
  //切换到 id为mysql_write_01的数据源
  DataSourceHolder.switcher().use("mysql_write_01");
  // ....
  // 切换到上一次使用的数据源 (mysql_read_01)
   DataSourceHolder.switcher().useLast();
  // ...
  // 切换到默认的数据源
  DataSourceHolder.switcher().useDefault();

注解方式:

@UseDataSource("mysql_write_01")
String insert(MyEntity);
 
@UseDataSource("mysql_read_01")
MyEntity selectByPk(String id);
 
@UseDefaultDataSource()
MyEntity selectByPk(String id);

注意: 如果没有使用hsweb-datasource-jta模块,则无法在事务中切换数据源, 你可能需要先取消掉对应方法上的事务:如在方法上注解@Transactional(propagation = Propagation.NOT_SUPPORTED)

马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Java
1
https://gitee.com/hsweb/hsweb-framework.git
git@gitee.com:hsweb/hsweb-framework.git
hsweb
hsweb-framework
hsweb-framework
master

搜索帮助