自定义数据库策略
想实现框架支持的数据库之外的数据库,可以通过自定义新的数据库策略来实现。
第 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,配置到全局配置中。
详细教程可参照源码或者咨询作者