Skip to content

自定义数据库策略

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

第 1 步:实现数据库策略

实现接口com.tangzc.autotable.core.strategy.IStrategy,接口定义如下:

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


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

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

    /**
     * 根据表名删除表
     *
     * @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 步:注入Spring/配置到全局配置

  • Spring应用,直接将实现类注入IOC容器即可。
  • 普通java应用,需要调用AutoTableGlobalConfig.addStrategy,手动配置到全局配置中。

详细教程待完善。。。