mica-activerecord 模块

功能

  • @TableName 注解 Model 自动 Mapping 映射。
  • 基于 Druid 的可执行 Sql 打印。
  • 基于 Druid 的 DruidSqlDialect,分页 sql 优化,支持多种数据库。
  • Record 的 jackson 处理。
  • @Tx 注解的 JFinal ActiveRecord 事务。
  • 可自定义 ActiveRecordPluginCustomizer Bean,实现自定义扩展。
  • CodeGenerator 代码生成 markdown 格式数据字典。
  • ModelUtil 实现 Model、Record -> Bean 转换。

文档

jfinal ActiveRecord 文档:https://jfinal.com/doc/5-1

添加依赖

maven

xml
<dependency>
  <groupId>net.dreamlu</groupId>
  <artifactId>mica-activerecord</artifactId>
  <version>${version}</version>
</dependency>

配置

ActiveRecord

配置项默认值说明
mica.activerecord.dialectmysql方言,默认:mysql,注意:设置为 Druid 时采用 Ansi + druid 分页优化,支持多种数据库
mica.activerecord.auto-table-scantrue自定表扫描
mica.activerecord.model-package模型的包路径
mica.activerecord.base-template-pathsql 模板前缀
mica.activerecord.sql-templatessql 模板,支持多个
mica.activerecord.transaction-level事务级别,默认:不可重复读

Spring database(优先)

配置项默认值说明
spring.datasource.url数据库地址
spring.datasource.username数据库用户名
spring.datasource.password数据库密码

Druid

配置项默认值说明
mica.druid.url数据库地址
mica.druid.username数据库用户名
mica.druid.password数据库密码
mica.druid.show-sqltrue打印可执行 sql,默认为 true
mica.druid.show-sql-patterns[]打印 sql 的正则,list 列表,例如:.*t_user.*
mica.druid.connection-init-sql
mica.druid.connection-properties
mica.druid.default-transaction-isolation
mica.druid.driver-class
mica.druid.filters
mica.druid.initial-size1
mica.druid.keep-alive
mica.druid.log-abandonedfalse
mica.druid.max-active32
mica.druid.max-pool-prepared-statement-per-connection-size-1
mica.druid.max-wait-1
mica.druid.min-evictable-idle-time-millis1800000
mica.druid.min-idle10
mica.druid.public-key
mica.druid.remove-abandonedfalse
mica.druid.remove-abandoned-timeout-millis300000
mica.druid.test-on-borrowfalse
mica.druid.test-on-returnfalse
mica.druid.test-while-idletrue
mica.druid.time-between-connect-error-millis30000
mica.druid.time-between-eviction-runs-millis60000
mica.druid.time-between-log-stats-millis
mica.druid.validation-queryselect 1
mica.druid.validation-query-timeout

代码生成

java
/**
 * 在数据库表有任何变动时,运行一下 main 方法,极速响应变化进行代码重构
 */
public class CodeGeneratorTest {

	public static void main(String[] args) {
		CodeGenerator generator = CodeGenerator.create()
			.url("jdbc:mysql://127.0.0.1:3306/blog")
			.username("root")
			.password("12345678")
			.basePackageName("net.dreamlu.demo")
			.outputDir(PathKit.getWebRootPath())
			.openDir() // 完成后打开目录窗口
			.build();
		// 为生成器添加类型映射,将数据库反射得到的类型映射到指定类型
//		generator.addTypeMapping(Date.class, LocalDateTime.class);
		// 设置数据库方言
		generator.setDialect(new MysqlDialect());
		// 设置是否生成链式 setter 方法
		generator.setGenerateChainSetter(false);
		// 添加不需要生成的表名
		generator.addExcludedTable("adv");
		// 设置是否在 Model 中生成 dao 对象
		generator.setGenerateDaoInModel(true);
		// 设置需要被移除的表名前缀用于生成modelName。例如表名 "osc_user",移除前缀 "osc_"后生成的model名为 "User"而非 OscUser
		generator.setRemovedTableNamePrefixes("t_");
		// 生成
		generator.generate();
	}

}

示例:自定义 jFinal ActiveRecord Plugin 配置

java
@AutoConfiguration
public class MicaArpCustomConfiguration {

	@Bean
	public ActiveRecordPluginCustomizer activeRecordPluginCustomizer() {
		return new ActiveRecordPluginCustomizer() {
			@Override
			public void customize(ActiveRecordPlugin arp) {
				System.out.println("----------------ActiveRecordPluginCustomizer-----------------");
				arp.setDevMode(true);
			}
		};
	}

}