Skip to content

自定义数据库策略

想实现框架支持的数据库之外的数据库,可以通过自定义新的数据库策略来实现。

第 1 步:实现数据库策略

实现接口org.dromara.autotable.core.strategy.IStrategy,接口定义如下:

java
public interface IStrategy<TABLE_META extends TableMetadata, COMPARE_TABLE_INFO extends CompareTableInfo> {


    /**
     * 策略对应的数据库方言,与数据库驱动中的接口{@link java.sql.DatabaseMetaData#getDatabaseProductName()}实现返回值一致
     *
     * @return 方言
     */
    String databaseDialect();

    /**
     * java字段类型与数据库类型映射关系
     *
     * @return 映射
     */
    Map<Class<?>, DefaultTypeEnumInterface> typeMapping();

    /**
     * 删除表的sql
     *
     * @param tableName 表名
     */
    String dropTable(String tableName);

    /**
     * 分析Bean,得到元数据信息
     *
     * @param beanClass 待分析的class
     * @return 表元信息
     */
    @NonNull
    TABLE_META analyseClass(Class<?> beanClass);

    /**
     * 创建表的SQL
     *
     * @param tableMetadata 表元数据
     */
    List<String> createTable(TABLE_META tableMetadata);

    /**
     * 对比表与bean的差异
     *
     * @param tableMetadata 表元数据
     * @return 待修改的表信息描述
     */
    @NonNull
    COMPARE_TABLE_INFO compareTable(TABLE_META tableMetadata);

    /**
     * 生成修改表的SQL
     *
     * @param compareTableInfo 修改表的描述信息
     */
    List<String> modifyTable(COMPARE_TABLE_INFO compareTableInfo);
}

第 2 步:注册/配置到全局配置

  • 方式一(推荐)、采用JAVA的SPI机制,实现org.dromara.autotable.core.strategy.IStrategy接口,并配置到META-INF/services/org.dromara.autotable.core.strategy.IStrategy文件中。
  • 方式二、手动调用AutoTableGlobalConfig.addStrategy,配置到全局配置中。

详细教程可参照源码或者咨询作者