springboot 集成 Jfinal activerecord插件

本文详细介绍了如何在基于SpringBoot的前后端分离项目中集成JFinal的activerecord插件,包括引入依赖、配置数据库连接池、创建生成实体类的配置类以及整合ActiveRecordPlugin的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于之前接触过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引入第三方数据库插件的所有内容 谢谢观看。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值