Skip to content

Commit

Permalink
1.取消参数中的parameterHandler.
Browse files Browse the repository at this point in the history
2.完善UpdateTest的单元测试.
  • Loading branch information
fantasy0v0 committed Nov 15, 2024
1 parent 7b67903 commit 41f9554
Show file tree
Hide file tree
Showing 11 changed files with 176 additions and 126 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ public <T> List<T> fetchBatch(ParameterHandler parameterHandler,
FetchMapper<T> mapper,
List<List<Object>> params) {
try (ConnectionReference ref = ConnectionPoolUtil.getReference(dataSource)) {
return Utils.executeBatch(ref.unwrap(), sql, params, parameterHandler, mapper);
return Utils.executeBatch(ref.unwrap(), null, sql, params, parameterHandler, mapper);
} catch (SQLException e) {
throw new SwiftSQLException(e);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,9 @@ public class PaginateBuilder {

private final DataSource dataSource;

private StatementConfiguration statementConfiguration;
private final StatementConfiguration statementConfiguration;

private final ParameterHandler parameterHandler;

private final String sql;

Expand All @@ -27,13 +29,14 @@ public class PaginateBuilder {

private List<Object> countParams;

PaginateBuilder(DataSource dataSource, StatementConfiguration statementConfiguration,
String sql, List<Object> params,
long number, long size) {
PaginateBuilder(DataSource dataSource,
StatementConfiguration statementConfiguration, ParameterHandler parameterHandler,
String sql, List<Object> params, long number, long size) {
this.dataSource = dataSource;
this.statementConfiguration = statementConfiguration;
this.sql = sql;
this.params = params;
this.parameterHandler = parameterHandler;
this.pageNumber = number;
this.pageSize = size;
}
Expand Down Expand Up @@ -70,7 +73,7 @@ private <T> List<T> getData(FetchMapper<T> mapper, ParameterHandler parameterHan
return Utils.fetch(dataSource, statementConfiguration, query.sql(), query.params(), mapper, parameterHandler);
}

public <T> PageData<T> fetch(FetchMapper<T> mapper, ParameterHandler parameterHandler) {
public <T> PageData<T> fetch(FetchMapper<T> mapper) {
try {
long total = getTotal();
long totalPages = 0;
Expand All @@ -84,8 +87,4 @@ public <T> PageData<T> fetch(FetchMapper<T> mapper, ParameterHandler parameterHa
}
}

public <T> PageData<T> fetch(FetchMapper<T> mapper) {
return fetch(mapper, null);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ public class SelectBuilder implements StatementConfigurator<SelectBuilder> {

private final List<Object> params;

private ParameterHandler parameterHandler;

SelectBuilder(DataSource dataSource,
StatementConfiguration statementConfiguration,
String sql, List<Object> params) {
Expand Down Expand Up @@ -50,6 +52,11 @@ public SelectBuilder setMaxRows(Integer maxRows) {
return this;
}

public SelectBuilder setParameterHandler(ParameterHandler parameterHandler) {
this.parameterHandler = parameterHandler;
return this;
}

/**
* 进行分页
*
Expand All @@ -58,37 +65,33 @@ public SelectBuilder setMaxRows(Integer maxRows) {
* @return PaginateBuilder
*/
public PaginateBuilder paginate(long number, long size) {
return new PaginateBuilder(dataSource, statementConfiguration, sql, params, number, size);
return new PaginateBuilder(
dataSource,
statementConfiguration, parameterHandler,
sql, params, number, size
);
}

public <T> List<T> fetch(FetchMapper<T> mapper, ParameterHandler parameterHandler) {
public <T> List<T> fetch(FetchMapper<T> mapper) {
try {
return Utils.fetch(dataSource, statementConfiguration, sql, params, mapper, parameterHandler);
} catch (SQLException e) {
throw new SwiftSQLException(e);
}
}

public <T> List<T> fetch(FetchMapper<T> mapper) {
return fetch(mapper, null);
}

public List<Object[]> fetch() {
return fetch(Utils::fetchByRow);
}

public <T> T fetchOne(FetchMapper<T> mapper, ParameterHandler parameterHandler) {
public <T> T fetchOne(FetchMapper<T> mapper) {
try {
return Utils.fetchOne(dataSource, statementConfiguration, sql, params, mapper, parameterHandler);
} catch (SQLException e) {
throw new SwiftSQLException(e);
}
}

public <T> T fetchOne(FetchMapper<T> mapper) {
return fetchOne(mapper, null);
}

public Object[] fetchOne() {
return fetchOne(Utils::fetchByRow);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ public class UpdateBuilder implements StatementConfigurator<UpdateBuilder> {

private final String sql;

private ParameterHandler parameterHandler;

UpdateBuilder(DataSource dataSource, StatementConfiguration statementConfiguration, String sql) {
this.dataSource = dataSource;
this.sql = sql;
Expand Down Expand Up @@ -46,134 +48,119 @@ public UpdateBuilder setMaxRows(Integer maxRows) {
return this;
}

public int execute(ParameterHandler parameterHandler, List<Object> params) {
public UpdateBuilder setParameterHandler(ParameterHandler parameterHandler) {
this.parameterHandler = parameterHandler;
return this;
}

public int execute(List<Object> params) {
try (ConnectionReference ref = ConnectionPoolUtil.getReference(dataSource)) {
return Utils.executeUpdate(ref.unwrap(), statementConfiguration, sql, params, parameterHandler);
} catch (SQLException e) {
throw new SwiftSQLException(e);
}
}

public int execute(ParameterHandler parameterHandler, Object... params) {
return execute(parameterHandler, Arrays.stream(params).toList());
}

public int execute(List<Object> params) {
return execute(null, params);
}

/**
* 执行更新语句, 这里虽然叫execute, 但执行的是executeUpdate
* @param params params
* @return 受影响的行数
*/
public int execute(Object... params) {
return execute(null, Arrays.stream(params).toList());
return execute(Arrays.stream(params).toList());
}

/**
* 执行更新语句, 这里虽然叫execute, 但执行的是executeUpdate
* @return 受影响的行数
*/
public int execute() {
return execute(null, (List<Object>) null);
return execute((List<Object>) null);
}

public int[] executeBatch(ParameterHandler parameterHandler, List<List<Object>> batch) {
/**
* 执行更新语句, 这里虽然叫execute, 但执行的是executeUpdate
* @return 受影响的行数
*/
public int[] batch(List<List<Object>> batch) {
try (ConnectionReference ref = ConnectionPoolUtil.getReference(dataSource)) {
return Utils.executeUpdateBatch(ref.unwrap(), statementConfiguration, sql, batch, parameterHandler);
} catch (SQLException e) {
throw new SwiftSQLException(e);
}
}

public int[] executeBatch(List<List<Object>> batch) {
return executeBatch(null, batch);
}

private <T> List<T> _fetch(ParameterHandler parameterHandler,
FetchMapper<T> mapper,
List<Object> params, boolean firstOnly) {
private <T> List<T> _fetch(FetchMapper<T> mapper,
List<Object> params, boolean firstOnly) {
try (ConnectionReference ref = ConnectionPoolUtil.getReference(dataSource)) {
return Utils.execute(ref.unwrap(), statementConfiguration, sql, params, parameterHandler, mapper, firstOnly);
} catch (SQLException e) {
throw new SwiftSQLException(e);
}
}

public <T> List<T> fetch(ParameterHandler parameterHandler,
FetchMapper<T> mapper,
public <T> List<T> fetch(FetchMapper<T> mapper,
List<Object> params) {
return _fetch(parameterHandler, mapper, params, false);
}

public <T> List<T> fetch(FetchMapper<T> mapper, List<Object> params) {
return fetch(null, mapper, params);
return _fetch(mapper, params, false);
}

public <T> List<T> fetch(FetchMapper<T> mapper, Object... params) {
return fetch(mapper, Arrays.stream(params).toList());
}

public <T> List<T> fetch(FetchMapper<T> mapper) {
return fetch(null, mapper, null);
return fetch(mapper, (List<Object>) null);
}

public List<Object[]> fetch(List<Object> params) {
return fetch(null, Utils::fetchByRow, params);
return fetch(Utils::fetchByRow, params);
}

public List<Object[]> fetch(Object... params) {
return fetch(Utils::fetchByRow, params);
}

public List<Object[]> fetch() {
return fetch(null, Utils::fetchByRow, null);
return fetch(Utils::fetchByRow, (List<Object>) null);
}

public <T> T fetchOne(ParameterHandler parameterHandler,
FetchMapper<T> mapper,
public <T> T fetchOne(FetchMapper<T> mapper,
List<Object> params) {
List<T> list = _fetch(parameterHandler, mapper, params, true);
List<T> list = _fetch(mapper, params, true);
return (list == null || list.isEmpty()) ? null : list.getFirst();
}

public <T> T fetchOne(FetchMapper<T> mapper, List<Object> params) {
return fetchOne(null, mapper, params);
}

public <T> T fetchOne(FetchMapper<T> mapper, Object... params) {
return fetchOne(mapper, Arrays.stream(params).toList());
}

public <T> T fetchOne(FetchMapper<T> mapper) {
return fetchOne(null, mapper, null);
return fetchOne(mapper, (List<Object>) null);
}

public Object[] fetchOne(List<Object> params) {
return fetchOne(null, Utils::fetchByRow, params);
return fetchOne(Utils::fetchByRow, params);
}

public Object[] fetchOne(Object... params) {
return fetchOne(Utils::fetchByRow, params);
}

public Object[] fetchOne() {
return fetchOne(null, Utils::fetchByRow, null);
return fetchOne(Utils::fetchByRow, (List<Object>) null);
}

// TODO
public <T> List<T> fetchBatch(ParameterHandler parameterHandler,
FetchMapper<T> mapper,
public <T> List<T> fetchBatch(FetchMapper<T> mapper,
List<List<Object>> params) {
try (ConnectionReference ref = ConnectionPoolUtil.getReference(dataSource)) {
return Utils.executeBatch(ref.unwrap(), sql, params, parameterHandler, mapper);
return Utils.executeBatch(ref.unwrap(), statementConfiguration, sql, params, parameterHandler, mapper);
} catch (SQLException e) {
throw new SwiftSQLException(e);
}
}

public <T> List<T> fetchBatch(FetchMapper<T> mapper, List<List<Object>> params) {
return fetchBatch(null, mapper, params);
}

public <T> List<T> fetchBatch(FetchMapper<T> mapper) {
return fetchBatch(null, mapper, null);
}

public List<Object[]> fetchBatch() {
return fetchBatch(null, Utils::fetchByRow, null);
public List<Object[]> fetchBatch(List<List<Object>> params) {
return fetchBatch(Utils::fetchByRow, params);
}

}
25 changes: 14 additions & 11 deletions jdbc/src/main/java/com/github/fantasy0v0/swift/jdbc/Utils.java
Original file line number Diff line number Diff line change
Expand Up @@ -133,27 +133,30 @@ static <T> List<T> execute(Connection conn, StatementConfiguration statementConf
}
}

static <T> List<T> executeBatch(Connection conn,
static <T> List<T> executeBatch(Connection conn, StatementConfiguration statementConfiguration,
String sql, List<List<Object>> batch,
ParameterHandler parameterHandler,
FetchMapper<T> mapper) throws SQLException {
LogUtil.performance().info("executeBatch begin");
LogUtil.common().warn("This is not real executeBatch");
long startTime = System.nanoTime() / 1000;
String callerInfo = printCallerInfo();
LogUtil.sql().debug("executeBatch: [{}], caller: {}", sql, callerInfo);
try (PreparedStatement statement = prepareStatement(conn, sql, null)) {
List<T> list = new ArrayList<>();
try (PreparedStatement statement = prepareStatement(conn, sql, statementConfiguration)) {
if (null != batch) {
for (List<Object> params : batch) {
fillStatementParams(conn, statement, params, parameterHandler);
statement.addBatch();
}
}
List<T> list = new ArrayList<>();
while (statement.getMoreResults()) {
try (ResultSet resultSet = statement.getResultSet()) {
List<T> row = fetchByResultSet(resultSet, mapper, true);
if (!row.isEmpty()) {
list.add(row.getFirst());
boolean result = statement.execute();
if (!result) {
list.add(null);
continue;
}
try (ResultSet resultSet = statement.getResultSet()) {
List<T> row = fetchByResultSet(resultSet, mapper, true);
if (!row.isEmpty()) {
list.add(row.getFirst());
}
}
}
}
Expand Down
8 changes: 4 additions & 4 deletions jdbc/src/test/java/test/SelectTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,10 @@ class SelectTest {
@TestFactory
List<DynamicTest> testAllDatabase() {
return ContainerUtil.testAllContainers(() -> List.of(
new JdbcTest("testFetch", this::testFetch),
new JdbcTest("testFetchOne", this::testFetchOne),
new JdbcTest("testPredicate", this::testPredicate),
new JdbcTest("testJson", this::testJson)
JdbcTest.of("testFetch", this::testFetch),
JdbcTest.of("testFetchOne", this::testFetchOne),
JdbcTest.of("testPredicate", this::testPredicate),
JdbcTest.of("testJson", this::testJson)
));
}

Expand Down
Loading

0 comments on commit 41f9554

Please sign in to comment.