SqlServerConnectionTest.java 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. import oracle.jdbc.OracleConnection;
  2. import org.dbsyncer.connector.config.DatabaseConfig;
  3. import org.dbsyncer.connector.database.DatabaseConnectorMapper;
  4. import org.dbsyncer.connector.database.ds.SimpleConnection;
  5. import org.junit.Test;
  6. import org.slf4j.Logger;
  7. import org.slf4j.LoggerFactory;
  8. import org.springframework.jdbc.core.BatchPreparedStatementSetter;
  9. import java.nio.charset.Charset;
  10. import java.sql.Clob;
  11. import java.sql.PreparedStatement;
  12. import java.sql.SQLException;
  13. import java.time.LocalDateTime;
  14. import java.util.concurrent.*;
  15. /**
  16. * @author AE86
  17. * @version 1.0.0
  18. * @date 2022/4/11 20:19
  19. */
  20. public class SqlServerConnectionTest {
  21. private final Logger logger = LoggerFactory.getLogger(getClass());
  22. @Test
  23. public void testByte() {
  24. DatabaseConfig config = new DatabaseConfig();
  25. config.setUrl("jdbc:oracle:thin:@127.0.0.1:1521:XE");
  26. config.setUsername("ae86");
  27. config.setPassword("123");
  28. config.setDriverClassName("oracle.jdbc.OracleDriver");
  29. final DatabaseConnectorMapper connectorMapper = new DatabaseConnectorMapper(config);
  30. String executeSql="UPDATE \"my_user\" SET \"name\"=?,\"clo\"=? WHERE \"id\"=?";
  31. int[] execute = connectorMapper.execute(databaseTemplate ->
  32. databaseTemplate.batchUpdate(executeSql, new BatchPreparedStatementSetter() {
  33. @Override
  34. public void setValues(PreparedStatement ps, int i) {
  35. try {
  36. SimpleConnection connection = (SimpleConnection) databaseTemplate.getConnection();
  37. OracleConnection conn = (OracleConnection) connection.getConnection();
  38. Clob clob = conn.createClob();
  39. clob.setString(1, new String("中文888".getBytes(Charset.defaultCharset())));
  40. ps.setString(1, "hello888");
  41. ps.setClob(2, clob);
  42. ps.setInt(3, 2);
  43. } catch (SQLException e) {
  44. e.printStackTrace();
  45. }
  46. }
  47. @Override
  48. public int getBatchSize() {
  49. return 1;
  50. }
  51. })
  52. );
  53. logger.info("execute:{}", execute);
  54. }
  55. @Test
  56. public void testConnection() throws InterruptedException {
  57. DatabaseConfig config = new DatabaseConfig();
  58. config.setUrl("jdbc:sqlserver://127.0.0.1:1433;DatabaseName=test");
  59. config.setUsername("sa");
  60. config.setPassword("123");
  61. config.setDriverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
  62. final DatabaseConnectorMapper connectorMapper = new DatabaseConnectorMapper(config);
  63. // 模拟并发
  64. final int threadSize = 100;
  65. final ExecutorService pool = Executors.newFixedThreadPool(threadSize);
  66. final CyclicBarrier barrier = new CyclicBarrier(threadSize);
  67. final CountDownLatch latch = new CountDownLatch(threadSize);
  68. for (int i = 0; i < threadSize; i++) {
  69. final int k = i + 3;
  70. pool.submit(() -> {
  71. try {
  72. barrier.await();
  73. // 模拟操作
  74. System.out.println(String.format("%s %s:%s", LocalDateTime.now(), Thread.currentThread().getName(), k));
  75. Object execute = connectorMapper.execute(tem -> tem.queryForObject("select 1", Integer.class));
  76. System.out.println(String.format("%s %s:%s execute=>%s", LocalDateTime.now(), Thread.currentThread().getName(), k, execute));
  77. } catch (InterruptedException e) {
  78. logger.error(e.getMessage());
  79. } catch (BrokenBarrierException e) {
  80. logger.error(e.getMessage());
  81. } catch (Exception e) {
  82. logger.error(e.getMessage());
  83. } finally {
  84. latch.countDown();
  85. }
  86. });
  87. }
  88. try {
  89. latch.await();
  90. logger.info("try to shutdown");
  91. pool.shutdown();
  92. } catch (InterruptedException e) {
  93. logger.error(e.getMessage());
  94. }
  95. TimeUnit.SECONDS.sleep(3);
  96. logger.info("test end");
  97. }
  98. }