Class DaoFactory

java.lang.Object
me.danwi.sqlex.core.DaoFactory
Direct Known Subclasses:
SpringDaoFactory

public class DaoFactory extends Object
  • Constructor Details

    • DaoFactory

      public DaoFactory(String url, String username, String password, Class<? extends RepositoryLike> repository)
      新建数据访问对象工厂实例
      Parameters:
      url - 连接
      username - 用户名
      password - 密码
      repository - SqlEx Repository
    • DaoFactory

      public DaoFactory(DataSource dataSource, Class<? extends RepositoryLike> repository)
      新建数据访问对象工厂实例,使用默认事务管理器
      Parameters:
      dataSource - 数据源
      repository - SqlEx Repository
    • DaoFactory

      public DaoFactory(TransactionManager transactionManager, Class<? extends RepositoryLike> repository, ExceptionTranslator exceptionTranslator)
      使用指定的事务管理器来新建数据访问对象工厂实例
      Parameters:
      transactionManager - 事务管理器
      repository - SqlEx Repository
      exceptionTranslator - 异常翻译
  • Method Details

    • newTransaction

      public Transaction newTransaction()
      新建事务,适合手动管理事务
      Returns:
      事务
    • transaction

      public <T> T transaction(TransactionAction<T> action)
      以事务的方式来运行函数 使用默认事务隔离级别
      Type Parameters:
      T - 闭包函数的返回值
      Parameters:
      action - 函数
      Returns:
      返回闭包函数的返回值
      Throws:
      SqlExUndeclaredException - action运行过程中的Checked异常包装
    • transaction

      public void transaction(TransactionActionReturnVoid action)
      以事务的方式来运行函数,函数无返回值 使用默认事务隔离级别
      Parameters:
      action - 函数
      Throws:
      SqlExUndeclaredException - action运行过程中的Checked异常包装
    • transaction

      public void transaction(Integer transactionIsolationLevel, TransactionActionReturnVoid action)
      以事务的方式来运行函数,函数无返回值
      Parameters:
      transactionIsolationLevel - 事务隔离级别, 例如:Connection.TRANSACTION_REPEATABLE_READ
      action - 函数
      Throws:
      SqlExUndeclaredException - action运行过程中的Checked异常包装
    • transaction

      public <T> T transaction(Integer transactionIsolationLevel, TransactionAction<T> action)
      以事务的方式来运行函数
      Type Parameters:
      T - 闭包函数的返回值
      Parameters:
      action - 函数
      transactionIsolationLevel - 事务隔离级别, 例如:Connection.TRANSACTION_REPEATABLE_READ
      Returns:
      返回闭包函数的返回值
      Throws:
      SqlExUndeclaredException - action运行过程中的Checked异常包装
    • newConnection

      public Connection newConnection()
      新建连接
      Returns:
      新建的数据连接
    • getRepositoryClass

      public Class<?> getRepositoryClass()
      获取该Dao工厂做管理的SqlEx Repository
      Returns:
      SqlEx Repository
    • getExceptionTranslator

      public ExceptionTranslator getExceptionTranslator()
      获取异常转换/翻译器
      Returns:
      异常转换/翻译器
    • migrate

      public void migrate()
      迁移到最近版本
    • migrate

      public void migrate(MigrateCallback callback)
      迁移到最近版本
      Parameters:
      callback - 迁移回调
    • check

      public void check()
      检查数据结构
    • setDatabaseName

      public void setDatabaseName(String name, String actualName)
      设置外部数据库在运行时的实际名称
      Parameters:
      name - 在Repository定义的数据库名称
      actualName - 运行时实际名称
    • getInstance

      public <T> T getInstance(Class<T> clazz)
      获取数据访问对象/表操作对象的实例
      Type Parameters:
      T - 数据访问对象/表操作对象类型
      Parameters:
      clazz - 数据访问对象/表操作对象Class
      Returns:
      数据访问对象/表操作对象实例
      Throws:
      SqlExRepositoryNotMatchException - 给定的类型不属于Factory管理的Repository
    • getRawSQLExecutor

      public RawSQLExecutor getRawSQLExecutor()
      获取原生SQL执行器
      Returns:
      原生SQL执行器
    • getRawSQLExecutor

      public RawSQLExecutor getRawSQLExecutor(Connection connection)
      获取原生SQL执行器,不从事务管理器中获取连接,而是使用指定的连接
      Parameters:
      connection - 指定SQL执行的连接
      Returns:
      原生SQL执行器