Class DaoFactory

  • Direct Known Subclasses:
    SpringDaoFactory

    public class DaoFactory
    extends java.lang.Object
    • Constructor Detail

      • DaoFactory

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

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

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

      • 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​(java.lang.Integer transactionIsolationLevel,
                                TransactionActionReturnVoid action)
        以事务的方式来运行函数,函数无返回值
        Parameters:
        transactionIsolationLevel - 事务隔离级别, 例如:Connection.TRANSACTION_REPEATABLE_READ
        action - 函数
        Throws:
        SqlExUndeclaredException - action运行过程中的Checked异常包装
      • transaction

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

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

        public java.lang.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​(java.lang.String name,
                                    java.lang.String actualName)
        设置外部数据库在运行时的实际名称
        Parameters:
        name - 在Repository定义的数据库名称
        actualName - 运行时实际名称
      • getInstance

        public <T> T getInstance​(java.lang.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​(java.sql.Connection connection)
        获取原生SQL执行器,不从事务管理器中获取连接,而是使用指定的连接
        Parameters:
        connection - 指定SQL执行的连接
        Returns:
        原生SQL执行器