临时数据源操作
最后更新: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创建 String url = "jdbc:mysql://localhost:13306/simple?useUnicode=true&characterEncoding=UTF8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true" ; 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); |