diff --git a/pom.xml b/pom.xml
index 5b5660e..b89cd4f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -35,28 +35,11 @@
test
+
- com.zaxxer
- HikariCP
- 4.0.3
-
-
- org.slf4j
- slf4j-api
-
-
- test
-
-
- org.postgresql
- postgresql
- 42.3.8
-
-
- org.checkerframework
- checker-qual
-
-
+ com.h2database
+ h2
+ 2.2.224
test
diff --git a/src/test/java/xyz/zhouxy/jdbc/test/SimpleJdbcTemplateTests.java b/src/test/java/xyz/zhouxy/jdbc/test/SimpleJdbcTemplateTests.java
index 1d10938..1658586 100644
--- a/src/test/java/xyz/zhouxy/jdbc/test/SimpleJdbcTemplateTests.java
+++ b/src/test/java/xyz/zhouxy/jdbc/test/SimpleJdbcTemplateTests.java
@@ -1,98 +1,142 @@
package xyz.zhouxy.jdbc.test;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.*;
import static xyz.zhouxy.jdbc.ParamBuilder.*;
-import static xyz.zhouxy.plusone.commons.sql.JdbcSql.IN;
+import static xyz.zhouxy.plusone.commons.sql.JdbcSql.*;
import java.sql.SQLException;
import java.time.LocalDate;
import java.time.LocalDateTime;
+import java.util.Date;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.Optional;
-import java.util.Random;
-import java.util.concurrent.ThreadLocalRandom;
-
-import javax.sql.DataSource;
+import org.h2.jdbcx.JdbcDataSource;
+import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Lists;
-import com.zaxxer.hikari.HikariConfig;
-import com.zaxxer.hikari.HikariDataSource;
import xyz.zhouxy.jdbc.DbRecord;
import xyz.zhouxy.jdbc.RowMapper;
import xyz.zhouxy.jdbc.SimpleJdbcTemplate;
import xyz.zhouxy.jdbc.SimpleJdbcTemplate.JdbcExecutor;
import xyz.zhouxy.plusone.commons.sql.SQL;
-import xyz.zhouxy.plusone.commons.util.ArrayTools;
import xyz.zhouxy.plusone.commons.util.IdGenerator;
import xyz.zhouxy.plusone.commons.util.IdWorker;
-import xyz.zhouxy.plusone.commons.util.Numbers;
class SimpleJdbcTemplateTests {
private static final Logger log = LoggerFactory.getLogger(SimpleJdbcTemplateTests.class);
- private static final DataSource dataSource;
-
private static final SimpleJdbcTemplate jdbcTemplate;
static {
- HikariConfig config = new HikariConfig();
- config.setJdbcUrl("jdbc:postgresql://localhost:5432/plusone");
- config.setUsername("postgres");
- config.setPassword("zhouxy108");
- config.setMaximumPoolSize(8);
- config.setConnectionTimeout(1000000);
- dataSource = new HikariDataSource(config);
+ JdbcDataSource dataSource = new JdbcDataSource();
+ dataSource.setURL("jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=FALSE;MODE=MySQL");
+ dataSource.setUser("sa");
+ dataSource.setPassword("");
jdbcTemplate = new SimpleJdbcTemplate(dataSource);
}
+ @BeforeAll
+ static void setUp() throws SQLException {
+ jdbcTemplate.update("CREATE TABLE sys_account ("
+ + "\n" + " id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY"
+ + "\n" + " ,username VARCHAR(255) NOT NULL"
+ + "\n" + " ,account_status VARCHAR(2) NOT NULL"
+ + "\n" + " ,create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP"
+ + "\n" + " ,created_by BIGINT NOT NULL"
+ + "\n" + " ,update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP"
+ + "\n" + " ,updated_by BIGINT DEFAULT NULL"
+ + "\n" + " ,version BIGINT NOT NULL DEFAULT 0"
+ + "\n" + ")");
+ jdbcTemplate.batchUpdate("INSERT INTO sys_account(id, username, account_status, created_by) VALUES (?, ?, ?, ?)", Lists.newArrayList(
+ buildParams(2L, "zhouxy2", "0", 108L),
+ buildParams(3L, "zhouxy3", "0", 108L),
+ buildParams(4L, "zhouxy4", "0", 108L),
+ buildParams(5L, "zhouxy5", "0", 108L),
+ buildParams(6L, "zhouxy6", "0", 108L),
+ buildParams(7L, "zhouxy7", "0", 108L),
+ buildParams(8L, "zhouxy8", "0", 108L),
+ buildParams(9L, "zhouxy9", "0", 108L)
+ ), 10);
+ jdbcTemplate.batchUpdate("INSERT INTO sys_account(id, username, account_status, created_by, create_time, update_time, version) VALUES (?, ?, ?, ?, ?, ?, ?)", Lists.newArrayList(
+ buildParams(10L, "zhouxy10", "1", 118L, LocalDate.of(2000, 1, 1), LocalDate.of(2000, 1, 29), 31),
+ buildParams(11L, "zhouxy11", "1", 118L, LocalDate.of(2000, 1, 1), LocalDate.of(2000, 1, 29), 28),
+ buildParams(12L, "zhouxy12", "1", 118L, LocalDate.of(2000, 1, 1), LocalDate.of(2000, 1, 29), 25),
+ buildParams(13L, "zhouxy13", "1", 118L, LocalDate.of(2000, 1, 1), LocalDate.of(2000, 1, 29), 22),
+ buildParams(14L, "zhouxy14", "1", 118L, LocalDate.of(2000, 1, 1), LocalDate.of(2000, 1, 29), 19),
+ buildParams(15L, "zhouxy15", "1", 118L, LocalDate.of(2000, 1, 1), LocalDate.of(2000, 1, 29), 16),
+ buildParams(16L, "zhouxy16", "1", 118L, LocalDate.of(2000, 1, 1), LocalDate.of(2000, 1, 29), 13),
+ buildParams(17L, "zhouxy17", "1", 118L, LocalDate.of(2000, 1, 1), LocalDate.of(2000, 1, 29), 10),
+ buildParams(18L, "zhouxy18", "1", 118L, LocalDate.of(2000, 1, 1), LocalDate.of(2000, 1, 29), 7),
+ buildParams(19L, "zhouxy19", "1", 118L, LocalDate.of(2000, 1, 1), LocalDate.of(2000, 1, 29), 0)
+ ), 10);
+ jdbcTemplate.update("INSERT INTO sys_account(id, username, account_status, created_by, create_time, updated_by, update_time, version) VALUES (?, ?, ?, ?, ?, ?, ?, ?)",
+ buildParams(20L, "zhouxy20", "2", 118L, LocalDateTime.of(2008, 8, 8, 20, 8), 31L, LocalDateTime.now(), 88L));
+ }
+
@Test
void testQuery() throws SQLException {
- Object[] ids = buildParams(22915, 22916, 22917, 22918, 22919, 22920, 22921);
+ Object[] ids = buildParams(5, 9, 13, 14, 17, 20, 108);
String sql = SQL.newJdbcSql()
- .SELECT("*")
- .FROM("test_table")
+ .SELECT("id", "username", "account_status")
+ .FROM("sys_account")
.WHERE(IN("id", ids))
.toString();
log.info(sql);
List rs = jdbcTemplate.queryRecordList(sql, ids);
- assertNotNull(rs);
- for (DbRecord baseEntity : rs) {
- // log.info("id: {}", baseEntity.getValueAsString("id")); // NOSONAR
- log.info(baseEntity.toString());
- assertTrue(baseEntity.getValueAsString("username").isPresent());
+ for (DbRecord dbRecord : rs) {
+ log.info("{}", dbRecord);
}
+ assertEquals(
+ Lists.newArrayList(
+ new DbRecord(ImmutableMap.of("id", 5L, "account_status", "0", "username", "zhouxy5")),
+ new DbRecord(ImmutableMap.of("id", 9L, "account_status", "0", "username", "zhouxy9")),
+ new DbRecord(ImmutableMap.of("id", 13L, "account_status", "1", "username", "zhouxy13")),
+ new DbRecord(ImmutableMap.of("id", 14L, "account_status", "1", "username", "zhouxy14")),
+ new DbRecord(ImmutableMap.of("id", 17L, "account_status", "1", "username", "zhouxy17")),
+ new DbRecord(ImmutableMap.of("id", 20L, "account_status", "2", "username", "zhouxy20"))
+ ),
+ rs
+ );
}
@Test
void testInsert() throws SQLException {
- List keys = jdbcTemplate.update(
- "INSERT INTO base_table(status, created_by) VALUES (?, ?)",
- buildParams(1, 886L),
- RowMapper.RECORD_MAPPER);
+ List