类 SQLRunner

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

public final class SQLRunner extends Object
SQLRunner 用于执行简单的 jdbc 查询
版本:
0.0.1
作者:
scx567888
  • 构造器详细资料

    • SQLRunner

      public SQLRunner(JDBCContext jdbcContext)
  • 方法详细资料

    • autoTransaction

      public static void autoTransaction(Connection con, ScxConsumer<Connection,Exception> handler) throws Exception
      自动事务
      参数:
      con - con
      handler - handler
      抛出:
      Exception - e
    • autoTransaction

      public static <T> T autoTransaction(Connection con, ScxFunction<Connection,T,Exception> handler) throws Exception
      自动事务 (带返回值)
      类型参数:
      T - T
      参数:
      con - con
      handler - handler
      返回:
      返回值
      抛出:
      Exception - e
    • query

      public <T> T query(Connection con, SQL sql, ResultHandler<T> resultHandler) throws SQLException
      query
      类型参数:
      T - T
      参数:
      con - con
      sql - sql
      resultHandler - resultHandler
      返回:
      result
      抛出:
      SQLException - e
    • query

      public <T> T query(SQL sql, ResultHandler<T> resultHandler)
      query (自动管理连接)
      类型参数:
      T - T
      参数:
      sql - sql
      resultHandler - resultHandler
      返回:
      result
    • execute

      public long execute(Connection con, SQL sql) throws SQLException
      execute
      参数:
      con - con
      sql - sql
      返回:
      受影响的行数
      抛出:
      SQLException - e
    • execute

      public long execute(SQL sql)
      execute (自动管理连接)
      参数:
      sql - sql
      返回:
      受影响的行数
    • update

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

      public UpdateResult update(SQL sql)
      update (自动管理连接)
      参数:
      sql - sql
      返回:
      UpdateResult
    • updateBatch

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

      public UpdateResult updateBatch(SQL sql)
      updateBatch (自动管理连接)
      参数:
      sql - sql
      返回:
      UpdateResult
    • 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