类 SQLRunner

java.lang.Object
cool.scx.data.jdbc.sql.SQLRunner

public final class SQLRunner extends Object
SQLRunner 执行 cool.scx.sql 语句
版本:
0.0.1
作者:
scx567888
  • 构造器详细资料

    • SQLRunner

      public SQLRunner(DataSource dataSource)
      根据数据源构建一个 SQLRunner
      参数:
      dataSource - a DataSource object
  • 方法详细资料

    • query

      public static <T> T query(Connection con, SQL sql, ResultHandler<T> resultHandler) throws SQLException
      a
      参数:
      con - a
      sql - a
      resultHandler - a
      返回:
      a
      抛出:
      SQLException - a
    • execute

      public static long execute(Connection con, SQL sql) throws SQLException
      a
      参数:
      con - a
      sql - a
      返回:
      a
      抛出:
      SQLException - a
    • update

      public static UpdateResult update(Connection con, SQL sql) throws SQLException
      a
      参数:
      con - a
      sql - a
      返回:
      a
      抛出:
      SQLException - a
    • updateBatch

      public static UpdateResult updateBatch(Connection con, SQL sql) throws SQLException
      批量执行更新语句
      参数:
      sql - cool.scx.sql
      con - 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,Exception> handler) throws Exception
      a
      类型参数:
      T - a
      参数:
      con - a
      handler - a
      返回:
      a
      抛出:
      Exception - a
    • query

      public <T> T query(SQL sql, ResultHandler<T> resultHandler)
      a
      类型参数:
      T - a
      参数:
      sql - a
      resultHandler - a
      返回:
      a
    • execute

      public long execute(SQL sql)
      执行 cool.scx.sql 语句
      参数:
      sql - a String object.
      返回:
      a 执行结果
    • update

      public UpdateResult update(SQL sql)
      a
      参数:
      sql - a
      返回:
      a
    • updateBatch

      public UpdateResult updateBatch(SQL sql)
      批量执行更新语句
      参数:
      sql - a
      返回:
      a
    • autoTransaction

      public void autoTransaction(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();
               }
        
      参数:
      handler - 连接消费者
    • autoTransaction

      public <T> T autoTransaction(Callable<T> handler)
      同上 autoTransaction(ScxRunnable) 但是有返回值
      类型参数:
      T - a
      参数:
      handler - a
      返回:
      a