mirror of
https://github.com/CarmJos/EasySQL.git
synced 2024-09-19 21:35:47 +00:00
[v0.3.2] 版本更新
- [A] 对于UPDATE类型的SQL操作采用 try-with-resources 形式获取链接与statement,避免中途报错而导致相关流未关闭。 - [U] 声明 setKeyIndex(int) 过时并移除 defaultKeyIndex() 方法,改为更明确的 setReturnGeneratedKeys(boolean) 与 returnGeneratedKeys() 方法,避免填入错误的index。
This commit is contained in:
parent
7d11131b97
commit
f5d04bb0bb
@ -5,7 +5,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>cc.carm.lib</groupId>
|
<groupId>cc.carm.lib</groupId>
|
||||||
<artifactId>easysql-parent</artifactId>
|
<artifactId>easysql-parent</artifactId>
|
||||||
<version>0.3.1</version>
|
<version>0.3.2</version>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
@ -29,16 +29,27 @@ public interface PreparedSQLUpdateBatchAction extends SQLAction<List<Integer>> {
|
|||||||
* <br>若该值 > 0,则 {@link #execute()} 返回自增主键数值
|
* <br>若该值 > 0,则 {@link #execute()} 返回自增主键数值
|
||||||
* <br>若该值 ≤ 0,则 {@link #execute()} 返回变更的行数
|
* <br>若该值 ≤ 0,则 {@link #execute()} 返回变更的行数
|
||||||
* @return {@link PreparedSQLUpdateBatchAction}
|
* @return {@link PreparedSQLUpdateBatchAction}
|
||||||
|
* @see #setReturnGeneratedKeys(boolean)
|
||||||
*/
|
*/
|
||||||
PreparedSQLUpdateBatchAction setKeyIndex(int keyColumnIndex);
|
@Deprecated
|
||||||
|
default PreparedSQLUpdateBatchAction setKeyIndex(int keyColumnIndex) {
|
||||||
|
return setReturnGeneratedKeys(keyColumnIndex > 0);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 默认主键序列的数值为 -1 (≤0) ,即默认返回发生变更的行数。
|
* 设定该操作返回自增键序列。
|
||||||
*
|
*
|
||||||
* @return 默认主键序列
|
* @return {@link PreparedSQLUpdateBatchAction}
|
||||||
*/
|
*/
|
||||||
default PreparedSQLUpdateBatchAction defaultKeyIndex() {
|
default PreparedSQLUpdateBatchAction returnGeneratedKeys() {
|
||||||
return setKeyIndex(-1); // will return changed lines number
|
return setReturnGeneratedKeys(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设定该操作是否返回自增键序列。
|
||||||
|
*
|
||||||
|
* @return {@link PreparedSQLUpdateBatchAction}
|
||||||
|
*/
|
||||||
|
PreparedSQLUpdateBatchAction setReturnGeneratedKeys(boolean returnGeneratedKey);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -11,17 +11,27 @@ public interface SQLUpdateAction extends SQLAction<Integer> {
|
|||||||
* <br>若该值 > 0,则 {@link #execute()} 返回自增主键数值
|
* <br>若该值 > 0,则 {@link #execute()} 返回自增主键数值
|
||||||
* <br>若该值 ≤ 0,则 {@link #execute()} 返回变更的行数
|
* <br>若该值 ≤ 0,则 {@link #execute()} 返回变更的行数
|
||||||
* @return {@link SQLUpdateAction}
|
* @return {@link SQLUpdateAction}
|
||||||
|
* @see #setReturnGeneratedKey(boolean)
|
||||||
*/
|
*/
|
||||||
SQLUpdateAction setKeyIndex(int keyColumnIndex);
|
@Deprecated
|
||||||
|
default SQLUpdateAction setKeyIndex(int keyColumnIndex) {
|
||||||
|
return setReturnGeneratedKey(keyColumnIndex > 0);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 默认主键序列的数值为 -1 (≤0) ,即默认返回发生变更的行数。
|
* 设定该操作返回自增键序列。
|
||||||
*
|
*
|
||||||
* @return 默认主键序列
|
* @return {@link SQLUpdateAction}
|
||||||
*/
|
*/
|
||||||
default SQLUpdateAction defaultKeyIndex() {
|
default SQLUpdateAction returnGeneratedKey() {
|
||||||
return setKeyIndex(-1); // will return changed lines number
|
return setReturnGeneratedKey(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设定该操作是否返回自增键序列。
|
||||||
|
*
|
||||||
|
* @return {@link SQLUpdateAction}
|
||||||
|
*/
|
||||||
|
SQLUpdateAction setReturnGeneratedKey(boolean returnGeneratedKey);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>easysql-parent</artifactId>
|
<artifactId>easysql-parent</artifactId>
|
||||||
<groupId>cc.carm.lib</groupId>
|
<groupId>cc.carm.lib</groupId>
|
||||||
<version>0.3.1</version>
|
<version>0.3.2</version>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@ public class PreparedSQLBatchUpdateActionImpl
|
|||||||
extends AbstractSQLAction<List<Integer>>
|
extends AbstractSQLAction<List<Integer>>
|
||||||
implements PreparedSQLUpdateBatchAction {
|
implements PreparedSQLUpdateBatchAction {
|
||||||
|
|
||||||
int keyIndex = -1;
|
boolean returnKeys = false;
|
||||||
List<Object[]> allParams;
|
List<Object[]> allParams;
|
||||||
|
|
||||||
public PreparedSQLBatchUpdateActionImpl(@NotNull SQLManagerImpl manager, @NotNull String sql) {
|
public PreparedSQLBatchUpdateActionImpl(@NotNull SQLManagerImpl manager, @NotNull String sql) {
|
||||||
@ -41,37 +41,34 @@ public class PreparedSQLBatchUpdateActionImpl
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PreparedSQLUpdateBatchAction setKeyIndex(int keyColumnIndex) {
|
public PreparedSQLUpdateBatchAction setReturnGeneratedKeys(boolean returnGeneratedKey) {
|
||||||
this.keyIndex = keyColumnIndex;
|
this.returnKeys = returnGeneratedKey;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NotNull List<Integer> execute() throws SQLException {
|
public @NotNull List<Integer> execute() throws SQLException {
|
||||||
List<Integer> returnedValues;
|
try (Connection connection = getManager().getConnection()) {
|
||||||
Connection connection = getManager().getConnection();
|
try (PreparedStatement statement = StatementUtil.createPrepareStatementBatch(
|
||||||
PreparedStatement statement = StatementUtil.createPrepareStatementBatch(
|
connection, getSQLContent(), allParams, returnKeys
|
||||||
connection, getSQLContent(), allParams, keyIndex > 0
|
)) {
|
||||||
);
|
|
||||||
outputDebugMessage();
|
outputDebugMessage();
|
||||||
if (keyIndex > 0) {
|
|
||||||
statement.executeBatch();
|
|
||||||
List<Integer> generatedKeys = new ArrayList<>();
|
|
||||||
ResultSet resultSet = statement.getGeneratedKeys();
|
|
||||||
if (resultSet != null) {
|
|
||||||
while (resultSet.next()) generatedKeys.add(resultSet.getInt(keyIndex));
|
|
||||||
resultSet.close();
|
|
||||||
}
|
|
||||||
returnedValues = generatedKeys;
|
|
||||||
} else {
|
|
||||||
int[] executed = statement.executeBatch();
|
int[] executed = statement.executeBatch();
|
||||||
returnedValues = Arrays.stream(executed).boxed().collect(Collectors.toList());
|
|
||||||
|
if (!returnKeys) return Arrays.stream(executed).boxed().collect(Collectors.toList());
|
||||||
|
else {
|
||||||
|
try (ResultSet resultSet = statement.getGeneratedKeys()) {
|
||||||
|
List<Integer> generatedKeys = new ArrayList<>();
|
||||||
|
while (resultSet.next()) {
|
||||||
|
generatedKeys.add(resultSet.getInt(1));
|
||||||
|
}
|
||||||
|
return generatedKeys;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
statement.close();
|
|
||||||
connection.close();
|
|
||||||
|
|
||||||
return returnedValues;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -53,28 +53,25 @@ public class PreparedSQLUpdateActionImpl
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NotNull Integer execute() throws SQLException {
|
public @NotNull Integer execute() throws SQLException {
|
||||||
int value = -1;
|
try (Connection connection = getManager().getConnection()) {
|
||||||
|
|
||||||
|
try (PreparedStatement statement = StatementUtil.createPrepareStatement(
|
||||||
|
connection, getSQLContent(), params, returnGeneratedKeys
|
||||||
|
)) {
|
||||||
|
|
||||||
Connection connection = getManager().getConnection();
|
|
||||||
PreparedStatement statement = StatementUtil.createPrepareStatement(
|
|
||||||
connection, getSQLContent(), params, keyIndex > 0
|
|
||||||
);
|
|
||||||
outputDebugMessage();
|
outputDebugMessage();
|
||||||
if (keyIndex > 0) {
|
|
||||||
statement.executeUpdate();
|
|
||||||
ResultSet resultSet = statement.getGeneratedKeys();
|
|
||||||
if (resultSet != null) {
|
|
||||||
if (resultSet.next()) value = resultSet.getInt(keyIndex);
|
|
||||||
resultSet.close();
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
value = statement.executeUpdate();
|
|
||||||
}
|
|
||||||
|
|
||||||
statement.close();
|
int changes = statement.executeUpdate();
|
||||||
connection.close();
|
if (!returnGeneratedKeys) return changes;
|
||||||
|
else {
|
||||||
return value;
|
try (ResultSet resultSet = statement.getGeneratedKeys()) {
|
||||||
|
return resultSet.next() ? resultSet.getInt(1) : -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -13,7 +13,7 @@ public class SQLUpdateActionImpl
|
|||||||
extends AbstractSQLAction<Integer>
|
extends AbstractSQLAction<Integer>
|
||||||
implements SQLUpdateAction {
|
implements SQLUpdateAction {
|
||||||
|
|
||||||
int keyIndex = -1;
|
boolean returnGeneratedKeys = false;
|
||||||
|
|
||||||
public SQLUpdateActionImpl(@NotNull SQLManagerImpl manager, @NotNull String sql) {
|
public SQLUpdateActionImpl(@NotNull SQLManagerImpl manager, @NotNull String sql) {
|
||||||
super(manager, sql);
|
super(manager, sql);
|
||||||
@ -21,33 +21,27 @@ public class SQLUpdateActionImpl
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NotNull Integer execute() throws SQLException {
|
public @NotNull Integer execute() throws SQLException {
|
||||||
int returnedValue = -1;
|
try (Connection connection = getManager().getConnection()) {
|
||||||
Connection connection = getManager().getConnection();
|
try (Statement statement = connection.createStatement()) {
|
||||||
Statement statement = connection.createStatement();
|
|
||||||
outputDebugMessage();
|
outputDebugMessage();
|
||||||
if (keyIndex > 0) {
|
|
||||||
statement.executeUpdate(getSQLContent(), Statement.RETURN_GENERATED_KEYS);
|
if (!returnGeneratedKeys) {
|
||||||
ResultSet resultSet = statement.getGeneratedKeys();
|
return statement.executeUpdate(getSQLContent());
|
||||||
if (resultSet != null) {
|
|
||||||
if (resultSet.next()) {
|
|
||||||
returnedValue = resultSet.getInt(keyIndex);
|
|
||||||
}
|
|
||||||
resultSet.close();
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
returnedValue = statement.executeUpdate(getSQLContent());
|
statement.executeUpdate(getSQLContent(), Statement.RETURN_GENERATED_KEYS);
|
||||||
|
|
||||||
|
try (ResultSet resultSet = statement.getGeneratedKeys()) {
|
||||||
|
return resultSet.next() ? resultSet.getInt(1) : -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
statement.close();
|
|
||||||
connection.close();
|
|
||||||
|
|
||||||
return returnedValue;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SQLUpdateActionImpl setKeyIndex(int keyIndex) {
|
public SQLUpdateAction setReturnGeneratedKey(boolean returnGeneratedKey) {
|
||||||
this.keyIndex = keyIndex;
|
this.returnGeneratedKeys = returnGeneratedKey;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -36,20 +36,21 @@ public class SQLUpdateBatchActionImpl
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NotNull List<Integer> execute() throws SQLException {
|
public @NotNull List<Integer> execute() throws SQLException {
|
||||||
Connection connection = getManager().getConnection();
|
try (Connection connection = getManager().getConnection()) {
|
||||||
Statement statement = connection.createStatement();
|
|
||||||
|
try (Statement statement = connection.createStatement()) {
|
||||||
outputDebugMessage();
|
outputDebugMessage();
|
||||||
|
|
||||||
for (String content : this.sqlContents) {
|
for (String content : this.sqlContents) {
|
||||||
statement.addBatch(content);
|
statement.addBatch(content);
|
||||||
}
|
}
|
||||||
|
|
||||||
int[] executed = statement.executeBatch();
|
int[] executed = statement.executeBatch();
|
||||||
List<Integer> returnedValues = Arrays.stream(executed).boxed().collect(Collectors.toList());
|
|
||||||
|
|
||||||
statement.close();
|
return Arrays.stream(executed).boxed().collect(Collectors.toList());
|
||||||
connection.close();
|
}
|
||||||
|
|
||||||
return returnedValues;
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -9,7 +9,6 @@ import org.jetbrains.annotations.Nullable;
|
|||||||
|
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
import java.sql.PreparedStatement;
|
import java.sql.PreparedStatement;
|
||||||
import java.sql.ResultSet;
|
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -54,21 +53,34 @@ public class PreparedQueryActionImpl extends QueryActionImpl implements Prepared
|
|||||||
|
|
||||||
Connection connection = getManager().getConnection();
|
Connection connection = getManager().getConnection();
|
||||||
PreparedStatement preparedStatement;
|
PreparedStatement preparedStatement;
|
||||||
|
try {
|
||||||
if (handler == null) {
|
if (handler == null) {
|
||||||
preparedStatement = StatementUtil.createPrepareStatement(connection, getSQLContent(), this.params);
|
preparedStatement = StatementUtil.createPrepareStatement(connection, getSQLContent(), this.params);
|
||||||
} else {
|
} else {
|
||||||
preparedStatement = connection.prepareStatement(getSQLContent());
|
preparedStatement = connection.prepareStatement(getSQLContent());
|
||||||
handler.accept(preparedStatement);
|
handler.accept(preparedStatement);
|
||||||
}
|
}
|
||||||
|
} catch (SQLException exception) {
|
||||||
|
connection.close();
|
||||||
|
throw exception;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
long executeTime = System.currentTimeMillis();
|
long executeTime = System.currentTimeMillis();
|
||||||
ResultSet resultSet = preparedStatement.executeQuery();
|
SQLQueryImpl query = new SQLQueryImpl(
|
||||||
|
|
||||||
return new SQLQueryImpl(
|
|
||||||
getManager(), this,
|
getManager(), this,
|
||||||
connection, preparedStatement, resultSet,
|
connection, preparedStatement,
|
||||||
|
preparedStatement.executeQuery(),
|
||||||
executeTime
|
executeTime
|
||||||
);
|
);
|
||||||
|
getManager().getActiveQuery().put(getActionUUID(), query);
|
||||||
|
|
||||||
|
return query;
|
||||||
|
} catch (SQLException exception) {
|
||||||
|
preparedStatement.close();
|
||||||
|
connection.close();
|
||||||
|
throw exception;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,7 +10,6 @@ import cc.carm.lib.easysql.query.SQLQueryImpl;
|
|||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
import java.sql.ResultSet;
|
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.sql.Statement;
|
import java.sql.Statement;
|
||||||
|
|
||||||
@ -24,21 +23,32 @@ public class QueryActionImpl extends AbstractSQLAction<SQLQuery> implements Quer
|
|||||||
public @NotNull SQLQueryImpl execute() throws SQLException {
|
public @NotNull SQLQueryImpl execute() throws SQLException {
|
||||||
|
|
||||||
Connection connection = getManager().getConnection();
|
Connection connection = getManager().getConnection();
|
||||||
Statement statement = connection.createStatement();
|
Statement statement;
|
||||||
|
|
||||||
|
try {
|
||||||
|
statement = connection.createStatement();
|
||||||
|
} catch (SQLException ex) {
|
||||||
|
connection.close();
|
||||||
|
throw ex;
|
||||||
|
}
|
||||||
|
|
||||||
outputDebugMessage();
|
outputDebugMessage();
|
||||||
|
try {
|
||||||
long executeTime = System.currentTimeMillis();
|
long executeTime = System.currentTimeMillis();
|
||||||
ResultSet resultSet = statement.executeQuery(getSQLContent());
|
|
||||||
SQLQueryImpl query = new SQLQueryImpl(
|
SQLQueryImpl query = new SQLQueryImpl(
|
||||||
getManager(), this,
|
getManager(), this,
|
||||||
connection, statement, resultSet,
|
connection, statement,
|
||||||
|
statement.executeQuery(getSQLContent()),
|
||||||
executeTime
|
executeTime
|
||||||
);
|
);
|
||||||
|
|
||||||
getManager().getActiveQuery().put(getActionUUID(), query);
|
getManager().getActiveQuery().put(getActionUUID(), query);
|
||||||
|
|
||||||
return query;
|
return query;
|
||||||
|
} catch (SQLException exception) {
|
||||||
|
statement.close();
|
||||||
|
connection.close();
|
||||||
|
throw exception;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -45,13 +45,14 @@ public class TableQueryBuilderImpl
|
|||||||
|
|
||||||
if (hasConditions()) sqlBuilder.append(" ").append(buildConditionSQL());
|
if (hasConditions()) sqlBuilder.append(" ").append(buildConditionSQL());
|
||||||
|
|
||||||
|
if (orderBy != null) sqlBuilder.append(" ").append(orderBy);
|
||||||
|
|
||||||
if (pageLimit != null && pageLimit.length == 2) {
|
if (pageLimit != null && pageLimit.length == 2) {
|
||||||
sqlBuilder.append(" LIMIT ").append(pageLimit[0]).append(",").append(pageLimit[1]);
|
sqlBuilder.append(" LIMIT ").append(pageLimit[0]).append(",").append(pageLimit[1]);
|
||||||
} else if (limit > 0) {
|
} else if (limit > 0) {
|
||||||
sqlBuilder.append(" ").append(buildLimitSQL());
|
sqlBuilder.append(" ").append(buildLimitSQL());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (orderBy != null) sqlBuilder.append(orderBy);
|
|
||||||
|
|
||||||
return new PreparedQueryActionImpl(getManager(), sqlBuilder.toString())
|
return new PreparedQueryActionImpl(getManager(), sqlBuilder.toString())
|
||||||
.setParams(hasConditionParams() ? getConditionParams() : null);
|
.setParams(hasConditionParams() ? getConditionParams() : null);
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>easysql-parent</artifactId>
|
<artifactId>easysql-parent</artifactId>
|
||||||
<groupId>cc.carm.lib</groupId>
|
<groupId>cc.carm.lib</groupId>
|
||||||
<version>0.3.1</version>
|
<version>0.3.2</version>
|
||||||
<relativePath>../../pom.xml</relativePath>
|
<relativePath>../../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>easysql-parent</artifactId>
|
<artifactId>easysql-parent</artifactId>
|
||||||
<groupId>cc.carm.lib</groupId>
|
<groupId>cc.carm.lib</groupId>
|
||||||
<version>0.3.1</version>
|
<version>0.3.2</version>
|
||||||
<relativePath>../../pom.xml</relativePath>
|
<relativePath>../../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
@ -2,14 +2,12 @@ package cc.carm.lib.easysql.testrunner;
|
|||||||
|
|
||||||
import cc.carm.lib.easysql.EasySQL;
|
import cc.carm.lib.easysql.EasySQL;
|
||||||
import cc.carm.lib.easysql.api.SQLManager;
|
import cc.carm.lib.easysql.api.SQLManager;
|
||||||
import cc.carm.lib.easysql.testrunner.tests.TableAlterTest;
|
import cc.carm.lib.easysql.testrunner.tests.SQLUpdateBatchTests;
|
||||||
|
import cc.carm.lib.easysql.testrunner.tests.SQLUpdateReturnKeysTest;
|
||||||
import cc.carm.lib.easysql.testrunner.tests.TableCreateTest;
|
import cc.carm.lib.easysql.testrunner.tests.TableCreateTest;
|
||||||
import cc.carm.lib.easysql.testrunner.tests.TableRenameTest;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
|
||||||
import org.jetbrains.annotations.TestOnly;
|
import org.jetbrains.annotations.TestOnly;
|
||||||
|
|
||||||
import java.lang.reflect.InvocationTargetException;
|
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.LinkedHashSet;
|
import java.util.LinkedHashSet;
|
||||||
import java.util.Scanner;
|
import java.util.Scanner;
|
||||||
@ -44,8 +42,12 @@ public class Main {
|
|||||||
print("加载测试类...");
|
print("加载测试类...");
|
||||||
Set<EasySQLTest> tests = new LinkedHashSet<>();
|
Set<EasySQLTest> tests = new LinkedHashSet<>();
|
||||||
tests.add(new TableCreateTest());
|
tests.add(new TableCreateTest());
|
||||||
tests.add(new TableAlterTest());
|
// tests.add(new TableAlterTest());
|
||||||
tests.add(new TableRenameTest());
|
// tests.add(new TableRenameTest());
|
||||||
|
// tests.add(new QueryNotCloseTest());
|
||||||
|
// tests.add(new QueryCloseTest());
|
||||||
|
tests.add(new SQLUpdateBatchTests());
|
||||||
|
tests.add(new SQLUpdateReturnKeysTest());
|
||||||
|
|
||||||
print("准备进行测试...");
|
print("准备进行测试...");
|
||||||
|
|
||||||
@ -77,21 +79,12 @@ public class Main {
|
|||||||
success, (tests.size() - success)
|
success, (tests.size() - success)
|
||||||
);
|
);
|
||||||
|
|
||||||
}
|
EasySQL.shutdownManager(sqlManager);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public static void print(@NotNull String format, Object... params) {
|
public static void print(@NotNull String format, Object... params) {
|
||||||
System.out.printf((format) + "%n", params);
|
System.out.printf((format) + "%n", params);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static @Nullable EasySQLTest cast(@NotNull Class<?> value) {
|
|
||||||
if (!EasySQLTest.class.isAssignableFrom(value)) return null;
|
|
||||||
try {
|
|
||||||
return (EasySQLTest) value.getDeclaredConstructor().newInstance();
|
|
||||||
} catch (InstantiationException | IllegalAccessException | NoSuchMethodException | InvocationTargetException e) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,31 @@
|
|||||||
|
package cc.carm.lib.easysql.testrunner.tests;
|
||||||
|
|
||||||
|
import cc.carm.lib.easysql.api.SQLManager;
|
||||||
|
import cc.carm.lib.easysql.api.SQLQuery;
|
||||||
|
import cc.carm.lib.easysql.testrunner.EasySQLTest;
|
||||||
|
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
|
||||||
|
public class QueryCloseTest extends EasySQLTest {
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onTest(SQLManager sqlManager) throws SQLException {
|
||||||
|
|
||||||
|
try (SQLQuery query = sqlManager.createQuery()
|
||||||
|
.inTable("test_user_table")
|
||||||
|
.orderBy("id", false)
|
||||||
|
.setLimit(5)
|
||||||
|
.build().execute()) {
|
||||||
|
ResultSet resultSet = query.getResultSet();
|
||||||
|
|
||||||
|
while (resultSet.next()) {
|
||||||
|
|
||||||
|
System.out.println("id: " + resultSet.getInt("id") + " username: " + resultSet.getString("username"));
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,30 @@
|
|||||||
|
package cc.carm.lib.easysql.testrunner.tests;
|
||||||
|
|
||||||
|
import cc.carm.lib.easysql.api.SQLManager;
|
||||||
|
import cc.carm.lib.easysql.api.SQLQuery;
|
||||||
|
import cc.carm.lib.easysql.testrunner.EasySQLTest;
|
||||||
|
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
|
||||||
|
public class QueryNotCloseTest extends EasySQLTest {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onTest(SQLManager sqlManager) throws SQLException {
|
||||||
|
SQLQuery query = sqlManager.createQuery()
|
||||||
|
.inTable("test_user_table")
|
||||||
|
.orderBy("id", false)
|
||||||
|
.setLimit(5)
|
||||||
|
.build().execute();
|
||||||
|
|
||||||
|
ResultSet resultSet = query.getResultSet();
|
||||||
|
|
||||||
|
while (resultSet.next()) {
|
||||||
|
|
||||||
|
System.out.println("id: " + resultSet.getInt("id") + " username: " + resultSet.getString("username"));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,38 @@
|
|||||||
|
package cc.carm.lib.easysql.testrunner.tests;
|
||||||
|
|
||||||
|
import cc.carm.lib.easysql.api.SQLManager;
|
||||||
|
import cc.carm.lib.easysql.testrunner.EasySQLTest;
|
||||||
|
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.UUID;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
import java.util.stream.IntStream;
|
||||||
|
|
||||||
|
public class SQLUpdateBatchTests extends EasySQLTest {
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onTest(SQLManager sqlManager) throws SQLException {
|
||||||
|
|
||||||
|
List<Integer> updates = sqlManager.createInsertBatch("test_user_table")
|
||||||
|
.setColumnNames("uuid", "username", "age")
|
||||||
|
.setAllParams(generateParams())
|
||||||
|
.execute();
|
||||||
|
|
||||||
|
System.out.println("changes " + Arrays.toString(updates.toArray()));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
protected List<Object[]> generateParams() {
|
||||||
|
return IntStream.range(0, 5).mapToObj(i -> generateParam()).collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
|
||||||
|
protected Object[] generateParam() {
|
||||||
|
UUID uuid = UUID.randomUUID();
|
||||||
|
return new Object[]{uuid, uuid.toString().substring(0, 5), (int) (Math.random() * 50)};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,24 @@
|
|||||||
|
package cc.carm.lib.easysql.testrunner.tests;
|
||||||
|
|
||||||
|
import cc.carm.lib.easysql.api.SQLManager;
|
||||||
|
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class SQLUpdateReturnKeysTest extends SQLUpdateBatchTests {
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onTest(SQLManager sqlManager) throws SQLException {
|
||||||
|
List<Integer> generatedKeys = sqlManager.createInsertBatch("test_user_table")
|
||||||
|
.setColumnNames("uuid", "username", "age")
|
||||||
|
.setAllParams(generateParams())
|
||||||
|
.returnGeneratedKeys()
|
||||||
|
.execute();
|
||||||
|
|
||||||
|
System.out.println("generated " + Arrays.toString(generatedKeys.toArray()));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
26
example/easysql-test/src/main/resources/log4j2.xml
Normal file
26
example/easysql-test/src/main/resources/log4j2.xml
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Configuration status="WARN" packages="cc.carm.lib.easysql">
|
||||||
|
<Appenders>
|
||||||
|
<console name="Console" target="SYSTEM_OUT">
|
||||||
|
<PatternLayout pattern="[%d{HH:mm:ss} %level]: %msg%n"/>
|
||||||
|
</console>
|
||||||
|
<RollingRandomAccessFile name="File" fileName="logs/latest.log" filePattern="logs/%d{yyyy-MM-dd}-%i.log.gz">
|
||||||
|
<PatternLayout pattern="[%d{HH:mm:ss}] [%t/%level]: %msg%n"/>
|
||||||
|
<Policies>
|
||||||
|
<TimeBasedTriggeringPolicy/>
|
||||||
|
<OnStartupTriggeringPolicy/>
|
||||||
|
</Policies>
|
||||||
|
</RollingRandomAccessFile>
|
||||||
|
</Appenders>
|
||||||
|
<Loggers>
|
||||||
|
<root level="info">
|
||||||
|
<filters>
|
||||||
|
<MarkerFilter marker="NETWORK_PACKETS" onMatch="DENY" onMismatch="NEUTRAL"/>
|
||||||
|
</filters>
|
||||||
|
<!-- <AppenderRef ref="WINDOWS_COMPAT" level="info"/>-->
|
||||||
|
<AppenderRef ref="File"/>
|
||||||
|
<appender-ref ref="Console"/>
|
||||||
|
</root>
|
||||||
|
</Loggers>
|
||||||
|
</Configuration>
|
||||||
|
|
2
pom.xml
2
pom.xml
@ -16,7 +16,7 @@
|
|||||||
<groupId>cc.carm.lib</groupId>
|
<groupId>cc.carm.lib</groupId>
|
||||||
<artifactId>easysql-parent</artifactId>
|
<artifactId>easysql-parent</artifactId>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
<version>0.3.1</version>
|
<version>0.3.2</version>
|
||||||
|
|
||||||
<modules>
|
<modules>
|
||||||
<module>easysql-api</module>
|
<module>easysql-api</module>
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>easysql-parent</artifactId>
|
<artifactId>easysql-parent</artifactId>
|
||||||
<groupId>cc.carm.lib</groupId>
|
<groupId>cc.carm.lib</groupId>
|
||||||
<version>0.3.1</version>
|
<version>0.3.2</version>
|
||||||
<relativePath>../../pom.xml</relativePath>
|
<relativePath>../../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>easysql-parent</artifactId>
|
<artifactId>easysql-parent</artifactId>
|
||||||
<groupId>cc.carm.lib</groupId>
|
<groupId>cc.carm.lib</groupId>
|
||||||
<version>0.3.1</version>
|
<version>0.3.2</version>
|
||||||
<relativePath>../../pom.xml</relativePath>
|
<relativePath>../../pom.xml</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
Loading…
Reference in New Issue
Block a user