DynamicDatasourceTest.java 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. package com.xjrsoft.xjrsoftboot;
  2. import cn.hutool.db.Db;
  3. import cn.hutool.db.DbUtil;
  4. import cn.hutool.db.Entity;
  5. import cn.hutool.db.Session;
  6. import com.baomidou.dynamic.datasource.annotation.DSTransactional;
  7. import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
  8. import com.xjrsoft.XjrSoftApplication;
  9. import com.xjrsoft.common.utils.DatasourceUtil;
  10. import org.junit.Test;
  11. import org.junit.runner.RunWith;
  12. import org.springframework.boot.test.context.SpringBootTest;
  13. import org.springframework.test.context.junit4.SpringRunner;
  14. import org.springframework.transaction.annotation.Transactional;
  15. import javax.sql.DataSource;
  16. import java.sql.SQLException;
  17. /**
  18. * dynamic datasource 多数据源 事务测试
  19. *
  20. * @Author: tzx
  21. * @Date: 2022/10/20 10:25
  22. */
  23. @RunWith(SpringRunner.class)
  24. @SpringBootTest(classes = XjrSoftApplication.class)
  25. public class DynamicDatasourceTest {
  26. @Test
  27. @DSTransactional
  28. public void testMultiTask() throws SQLException {
  29. DataSource datasourceMaster = DatasourceUtil.getDatasourceMaster();
  30. DataSource dataSourceSlave = DatasourceUtil.getDataSource("1");
  31. Session masterSession = Session.create(datasourceMaster);
  32. masterSession.beginTransaction();
  33. Entity masterEntity = Entity.create("xjr_user").set("id", 123124L).set("name", "事务测试").set("department_id",1123123L).set("delete_mark",1).set("enabled_mark",1);
  34. masterSession.insert(masterEntity);
  35. Session slaveSession = Session.create(dataSourceSlave);
  36. slaveSession.beginTransaction();
  37. Entity slaveEntityEntity = Entity.create("xjr_user").set("id", 123124L).set("name", "事务测试").set("delete_mark",1).set("enabled_mark",1);
  38. slaveSession.insert(slaveEntityEntity);
  39. try {
  40. masterSession.commit();
  41. slaveSession.commit();
  42. }
  43. catch(Exception e) {
  44. masterSession.rollback();
  45. slaveSession.rollback();
  46. }
  47. // Db masterDb = DbUtil.use(datasourceMaster);
  48. //
  49. //
  50. // Entity masterEntity = Entity.create("xjr_user").set("id", 123124L).set("name", "事务测试").set("department_id",1123123L).set("delete_mark",1).set("enabled_mark",1);
  51. // masterDb.insert(masterEntity);
  52. //
  53. //
  54. // Db slaveDb = DbUtil.use(dataSourceSlave);
  55. //
  56. // Entity slaveEntity = Entity.create("xjr_user").set("id", 123124L).set("name", "事务测试").set("delete_mark",1).set("enabled_mark",1);
  57. // slaveDb.insert(slaveEntity);
  58. throw new SQLException("报错");
  59. }
  60. }