临时数据源操作

最后更新:2023-10-18 19:48:20 | 状态:未完成

临时数据源操作可以通过ServiceProxy创建临时service

执行完后GC会自动回收,不需要像DataSoureHolder.reg注册的数据源那样 通过RuntimeHolder..destroy注销

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
//一、根据DataSource创建
DruidDataSource ds = new DruidDataSource();
ds.setUrl(url);
ds.setDriverClassName("com.mysql.cj.jdbc.Driver");
ds.setUsername("root");
ds.setPassword("root");
AnylineService service = ServiceProxy.temporary(ds);
LinkedHashMap<String, Table> tables = service.metadata().tables();
for(String key:tables.keySet()){
    System.out.println(key);
}
 
DataSource ds1 = DataSourceUtil.build("com.zaxxer.hikari.HikariDataSource", "com.mysql.cj.jdbc.Driver", url, "root", "root");
service = ServiceProxy.temporary(ds1);
tables = service.metadata().tables();
for(String key:tables.keySet()){
    System.out.println(key);
}
//二、根据JdbcTemplate创建,对于spring项目一般都有一个JdbcTemplate
service = ServiceProxy.temporary(template);
 
//事务控制,运行时动态创建的数据源不支持注解方式
DataSourceTransactionManager dstm = new DataSourceTransactionManager(ds1);
DefaultTransactionDefinition definition = new DefaultTransactionDefinition();
// 定义事务传播方式 以及 其他参数都在definition中设置
definition.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
TransactionStatus status = dstm.getTransaction(definition);
//service.insert();
dstm.commit(status);


首页 最近更新 搜索 提交 回复