类 SQLRunner
java.lang.Object
cool.scx.data.jdbc.sql.SQLRunner
SQLRunner 执行 cool.scx.sql 语句
- 版本:
- 0.0.1
- 作者:
- scx567888
-
构造器概要
构造器 -
方法概要
修饰符和类型方法说明voidautoTransaction(ScxRunnable<?> handler) 自动处理事务并在产生异常时进行自动回滚 注意 其中的操作会在另一个线程中执行 所以需要注意线程的操作 当抛出异常时 请使用ScxExceptionHelper.getRootCause(Throwable)来获取真正的异常 用法static voidautoTransaction(Connection con, ScxConsumer<Connection, Exception> handler) 同 autoTransactionstatic <T> TautoTransaction(Connection con, ScxFunction<Connection, T, Exception> handler) a<T> TautoTransaction(Callable<T> handler) 同上autoTransaction(ScxRunnable)但是有返回值long执行 cool.scx.sql 语句static longexecute(Connection con, SQL sql) a<T> Tquery(SQL sql, ResultHandler<T> resultHandler) astatic <T> Tquery(Connection con, SQL sql, ResultHandler<T> resultHandler) aastatic UpdateResultupdate(Connection con, SQL sql) aupdateBatch(SQL sql) 批量执行更新语句static UpdateResultupdateBatch(Connection con, SQL sql) 批量执行更新语句
-
构造器详细资料
-
SQLRunner
根据数据源构建一个 SQLRunner- 参数:
dataSource- a DataSource object
-
-
方法详细资料
-
query
public static <T> T query(Connection con, SQL sql, ResultHandler<T> resultHandler) throws SQLException a- 参数:
con- asql- aresultHandler- a- 返回:
- a
- 抛出:
SQLException- a
-
execute
a- 参数:
con- asql- a- 返回:
- a
- 抛出:
SQLException- a
-
update
a- 参数:
con- asql- a- 返回:
- a
- 抛出:
SQLException- a
-
updateBatch
批量执行更新语句- 参数:
sql- cool.scx.sqlcon- a Connection object- 返回:
- r
- 抛出:
SQLException- if any.
-
autoTransaction
public static void autoTransaction(Connection con, ScxConsumer<Connection, Exception> handler) throws Exception同 autoTransaction- 参数:
con- 连接对象handler- handler- 抛出:
Exception- e
-
autoTransaction
public static <T> T autoTransaction(Connection con, ScxFunction<Connection, T, throws ExceptionException> handler) a- 类型参数:
T- a- 参数:
con- ahandler- a- 返回:
- a
- 抛出:
Exception- a
-
query
a- 类型参数:
T- a- 参数:
sql- aresultHandler- a- 返回:
- a
-
execute
执行 cool.scx.sql 语句- 参数:
sql- aStringobject.- 返回:
- a 执行结果
-
update
a- 参数:
sql- a- 返回:
- a
-
updateBatch
批量执行更新语句- 参数:
sql- a- 返回:
- a
-
autoTransaction
自动处理事务并在产生异常时进行自动回滚 注意 其中的操作会在另一个线程中执行 所以需要注意线程的操作 当抛出异常时 请使用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(); }- 参数:
handler- 连接消费者
-
autoTransaction
同上autoTransaction(ScxRunnable)但是有返回值- 类型参数:
T- a- 参数:
handler- a- 返回:
- a
-