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

声明式数据源切换

pom.xml
1
hsweb:
2
datasource:
3
switcher:
4
test: # 只是一个标识
5
# 拦截类和方法的表达式
6
expression: org.hswebframework.**.*Service.find*
7
# 使用数据源
8
data-source-id: read_db
Copied!

注解方式数据源切换

1
@UseDataSource("mysql_write_01")
2
String insert(MyEntity);
3
4
@UseDataSource("mysql_read_01")
5
MyEntity selectByPk(String id);
6
7
@UseDefaultDataSource()
8
MyEntity selectByPk(String id);
Copied!

编程式数据源切换

1
//切换到 id为mysql_read_01的数据源
2
DataSourceHolder.switcher().use("mysql_read_01");
3
// ....
4
//切换到 id为mysql_write_01的数据源
5
DataSourceHolder.switcher().use("mysql_write_01");
6
// ....
7
// 切换到上一次使用的数据源 (mysql_read_01)
8
DataSourceHolder.switcher().useLast();
9
// ...
10
// 切换到默认的数据源
11
DataSourceHolder.switcher().useDefault();
Copied!
如果没有使用Jta多数据源,则无法在事务中切换数据源, 你可能需要先取消掉对应方法上的事务:如在方法上注解@Transactional(propagation = Propagation.NOT_SUPPORTED)
Last modified 2yr ago