由于之前接触过Jfinal 非常喜欢其独特的数据库操作便利性 现在若依前后端分离项目里面集成activerecord插件 以下是详细步骤
首先需要引入相关pom
<!--实现jfinal activerecord-->
<dependency>
<groupId>com.jfinal</groupId>
<artifactId>activerecord</artifactId>
<version>4.9.06</version>
</dependency>
<!-- 阿里数据库连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.16</version>
</dependency>
<!-- Mysql驱动包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.22</version>
</dependency>
注意 mysql的驱动版本 建议是8.0.22 因为此版本兼容5.x - 8.0 ,因为如果版本比较低的话 会出现一些不兼容的情况 比如 LocalDateTime 无法转换为Date等
接着就是创建一个数据库表生成实体类的 配置类
package com.box.wms.config;
import javax.sql.DataSource;
import com.jfinal.kit.PathKit;
import com.jfinal.kit.Prop;
import com.jfinal.kit.PropKit;
import com.jfinal.plugin.activerecord.dialect.MysqlDialect;
import com.jfinal.plugin.activerecord.generator.Generator;
import com.jfinal.plugin.druid.DruidPlugin;
/**
* @ClassName BoxGenerator
* @Description model数据库实体类生成工具
* @Author mwj
* @Date 2023/10/13/013 - 13:14
* @Version 1.0
*/
public class BoxGenerator {
public static DruidPlugin createDruidPlugin() {
Prop p = PropKit.useFirstFound("wms-generator.txt");
return new DruidPlugin(p.get("jdbcUrl"), p.get("user"), p.get("password").trim(),p.get("driverClassName"));
}
public static DataSource getDataSource() {
DruidPlugin druidPlugin = createDruidPlugin();
druidPlugin.start();
return druidPlugin.getDataSource();
}
public static void main(String[] args) {
// base model 所使用的包名
String baseModelPackageName = "com.box.wms.model.base";
// base model 文件保存路径
String baseModelOutputDir = PathKit.getWebRootPath() + "/src/main/java/com/box/wms/model/base";
// model 所使用的包名 (MappingKit 默认使用的包名)
String modelPackageName = "com.box.wms.model";
// model 文件保存路径 (MappingKit 与 DataDictionary 文件默认保存路径)
String modelOutputDir = baseModelOutputDir + "/..";
// 创建生成器
Generator generator = new Generator(getDataSource(), baseModelPackageName, baseModelOutputDir, modelPackageName, modelOutputDir);
// 配置是否生成备注
generator.setGenerateRemarks(true);
// 设置数据库方言
generator.setDialect(new MysqlDialect());
// 设置是否生成链式 setter 方法
generator.setGenerateChainSetter(false);
// 添加不需要生成的表名
generator.addExcludedTable("adv");
// 设置是否在 Model 中生成 dao 对象
generator.setGenerateDaoInModel(true);
// 设置是否生成字典文件
generator.setGenerateDataDictionary(false);
// 设置需要被移除的表名前缀用于生成modelName。例如表名 "osc_user",移除前缀 "osc_"后生成的model名为 "User"而非 OscUser
generator.setRemovedTableNamePrefixes("wms");
// 生成
generator.generate();
}
}
以上com.box.wms.model 以及/src/main/java/com/box/wms/model/base 和 com.box.wms.model等路径改成你需要生成实体类的路径
然后点击main方法执行。。 待生成全部实体类以后 引入以下配置类。
package com.box.wms.config;
import com.box.wms.model._MappingKit;
import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.plugin.druid.DruidPlugin;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* @ClassName BoxActiveRecordPluginConfig
* @Description 集成轻量级数据库插件 ActiveRecord
* @Author mwj
* @Date 2023/10/13/013 - 13:17
* @Version 1.0
*/
@Configuration
public class BoxActiveRecordPluginConfig {
/**
* logger
*/
private static final Logger LOGGER = LoggerFactory.getLogger(BoxActiveRecordPluginConfig.class);
@Bean
public ActiveRecordPlugin initActiveRecordPlugin() {
// 配置druid数据库连接池插件
DruidPlugin druidPlugin = BoxGenerator.createDruidPlugin();
// 配置ActiveRecord插件
ActiveRecordPlugin arp = new ActiveRecordPlugin(druidPlugin);
//显示打印sql
arp.setShowSql(true);
//配置是否处于开发模式,默认为false
arp.setDevMode(true);
// 所有映射在 MappingKit 中自动化搞定
_MappingKit.mapping(arp);
// 开启插件
druidPlugin.start();
arp.start();
LOGGER.info("BoxActiveRecordPlugin Start Successful");
return arp;
}
}
如果用的是若依框架或者其他spring框架可以试试以下内容
import com.boxline.wms.model._MappingKit;
import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.sql.DataSource;
/**
* @ClassName BoxActiveRecordPluginConfig
* @Description 集成轻量级数据库插件 ActiveRecord
* @Author mwj
* @Date 2024/5/29/013 - 13:17
* @Version 1.0
*/
@Configuration
@Slf4j
public class BoxActiveRecordPluginConfig {
@Autowired
private DataSource masterDataSource;
@Bean
public ActiveRecordPlugin initActiveRecordPlugin() {
ActiveRecordPlugin arp = new ActiveRecordPlugin(masterDataSource);
//显示打印sql
arp.setShowSql(true);
//配置是否处于开发模式,默认为false
arp.setDevMode(false);
// 所有映射在 MappingKit 中自动化搞定
_MappingKit.mapping(arp);
arp.start();
log.info("BoxActiveRecordPlugin Start Successful");
return arp;
}
}
_MappingKit类会在代码生成实体类之后 在model包下面出现 ,引入该类即可
wms-generator.txt文件创建好之后放在resource资源包下面。 内容如下
# 第三方activerecord插件使用
driverClassName= com.mysql.cj.jdbc.Driver
jdbcUrl = jdbc:mysql://rm-cn.rds.aliyuncs.com:3306/box_2023a?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
user = root
password = Box123456
以上便是sprongboot引入第三方数据库插件的所有内容 谢谢观看。