Class SQLRunner
java.lang.Object
cool.scx.jdbc.sql.SQLRunner
SQLRunner 用于执行简单的 jdbc 查询
- Version:
- 0.0.1
- Author:
- scx567888
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidautoTransaction(cool.scx.common.functional.ScxRunnable<?> handler) 自动处理事务并在产生异常时进行自动回滚 注意 其中的操作会在另一个线程中执行 所以需要注意线程的操作 当抛出异常时 请使用ScxExceptionHelper.getRootCause(Throwable)来获取真正的异常 用法static voidautoTransaction(Connection con, cool.scx.common.functional.ScxConsumer<Connection, Exception> handler) 自动事务static <T> TautoTransaction(Connection con, cool.scx.common.functional.ScxFunction<Connection, T, Exception> handler) 自动事务 (带返回值)<T> TautoTransaction(Callable<T> handler) 同上autoTransaction(ScxRunnable)但是有返回值longexecute (自动管理连接)longexecute(Connection con, SQL sql) execute<T> Tquery(SQL sql, ResultHandler<T> resultHandler) query (自动管理连接)<T> Tquery(Connection con, SQL sql, ResultHandler<T> resultHandler) queryupdate (自动管理连接)update(Connection con, SQL sql) updateupdateBatch(SQL sql) updateBatch (自动管理连接)updateBatch(Connection con, SQL sql) updateBatch
-
Constructor Details
-
SQLRunner
-
-
Method Details
-
autoTransaction
public static void autoTransaction(Connection con, cool.scx.common.functional.ScxConsumer<Connection, Exception> handler) throws Exception自动事务- Parameters:
con- conhandler- handler- Throws:
Exception- e
-
autoTransaction
public static <T> T autoTransaction(Connection con, cool.scx.common.functional.ScxFunction<Connection, T, throws ExceptionException> handler) 自动事务 (带返回值)- Type Parameters:
T- T- Parameters:
con- conhandler- handler- Returns:
- 返回值
- Throws:
Exception- e
-
query
query- Type Parameters:
T- T- Parameters:
con- consql- sqlresultHandler- resultHandler- Returns:
- result
- Throws:
SQLException- e
-
query
query (自动管理连接)- Type Parameters:
T- T- Parameters:
sql- sqlresultHandler- resultHandler- Returns:
- result
-
execute
execute- Parameters:
con- consql- sql- Returns:
- 受影响的行数
- Throws:
SQLException- e
-
execute
-
update
update- Parameters:
con- consql- sql- Returns:
- UpdateResult
- Throws:
SQLException- e
-
update
-
updateBatch
updateBatch- Parameters:
con- consql- sql- Returns:
- UpdateResult
- Throws:
SQLException- e
-
updateBatch
updateBatch (自动管理连接)- Parameters:
sql- sql- Returns:
- UpdateResult
-
autoTransaction
public void autoTransaction(cool.scx.common.functional.ScxRunnable<?> handler) 自动处理事务并在产生异常时进行自动回滚 注意 其中的操作会在另一个线程中执行 所以需要注意线程的操作 当抛出异常时 请使用
ScxExceptionHelper.getRootCause(Throwable)来获取真正的异常 用法假设有以下结构的数据表 create table test ( name varchar(32) null unique, );在连接消费者中传入要执行的操作 SQLRunner sqlRunner = xxx; try { sqlRunner.autoTransaction(() -> { // 这句代码会正确执行 sqlRunner.execute(NoParametersSQL.of("insert into test(name) values('uniqueName') ")); // 这句会产生异常 这时上一个语句会进行回滚 (rollback) 同时将异常抛出 sqlRunner.execute(NoParametersSQL.of("insert into test(name) values('uniqueName') ")); }); } catch (Exception e){ //这里会捕获 getConnection 可能产生的 SQLException 和 autoTransaction 代码块中产生的所有异常 //因为会进行多层包裹 所以建议使用 ScxExceptionHelper.getRootCause(e); 来获取真正的异常 ScxExceptionHelper.getRootCause(e).printStackTrace(); } }- Parameters:
handler- 连接消费者
-
autoTransaction
同上autoTransaction(ScxRunnable)但是有返回值- Type Parameters:
T- a- Parameters:
handler- a- Returns:
- a
-