SpringBoot中使用ActiveRecordPlugin插件

在写分享前先看了看jfinal-3.3的文档章节:5.13 任意环境下使用 ActiveRecord

ActiveRecordPlugin 可以独立于 java web 环境运行在任何普通的 java 程序中,使用方式极
度简单,相对于 web 项目只需要手动调用一下其 start() 方法即可立即使用。以下是代码示例:

public class ActiveRecordTest {
    public static void main(String[] args) {
        DruidPlugin dp = new DruidPlugin("localhost", "userName", "password");
        ActiveRecordPlugin arp = new ActiveRecordPlugin(dp);
        arp.addMapping("blog", Blog.class);
         
        // 与web环境唯一的不同是要手动调用一次相关插件的start()方法
        dp.start();
        arp.start();
         
        // 通过上面简单的几行代码,即可立即开始使用
        new Blog().set("title", "title").set("content", "cxt text").save();
        Blog.dao.findById(123);
    }
}

注意:ActiveRecordPlugin 所依赖的其它插件也必须手动调用一下 start()方法,如上例中的
dp.start()。

下面进入正题:

创建一个插件类

ActiveRecordPluginConfig 类

package com.choxsu.elastic.config;

import com.alibaba.druid.filter.stat.StatFilter;
import com.alibaba.druid.wall.WallFilter;
import com.choxsu.elastic.entity._MappingKit;
import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.plugin.druid.DruidPlugin;
import com.jfinal.template.source.ClassPathSourceFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.sql.DataSource;
import java.sql.Connection;
import javax.annotation.PostConstruct;

/**
 * @author chox su
 * @date 2017/11/29 10:16
 */
@Configuration
public class ActiveRecordPluginConfig {

    @Resource
    private DataSource dataSource;

    @PostConstruct    
    public void initActiveRecordPlugin() {
        ActiveRecordPlugin arp = new ActiveRecordPlugin(dataSource);
        arp.setTransactionLevel(Connection.TRANSACTION_READ_COMMITTED);
        // _MappingKit.mapping(arp);
        arp.setShowSql(false);
        arp.getEngine().setSourceFactory(new ClassPathSourceFactory());
        // 必须调用start
        arp.start();
    }

}
application.yml 配置文件
server:
  port: 1013
spring:
  application:
    name: elastic
  datasource:
    username: root
    password: root
    url: jdbc:mysql://192.168.3.44:3306/jfinal_club?characterEncoding=utf8&useSSL=false
pom.xml 配置文件
<!--add jdbc dependency-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.27</version>
</dependency>

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.42</version>
</dependency>

<dependency>
    <groupId>com.jfinal</groupId>
    <artifactId>jfinal</artifactId>
    <version>4.7</version>
</dependency>

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.0.29</version>
</dependency>

主要用到的是上面这几个maven dependency

目录结构

图片.png

测试效果

Controller类方法定义

图片.png

swagger接口测试

图片.png

图片.png

sql管理功能这里没贴上来,但我已经测试通过了,springboot打包成jar启动可以找到sql路径,之前我是使用PathKit.getRootPath这种方式,这种方式打包成jar后就找不到路径;按照

ActiveRecordPluginConfig 类

  配置即可

评论区

JFinal

2017-12-23 11:42

这行代码尤其妙:
arp.getEngine().setSourceFactory(new ClassPathSourceFactory());
jfinal 3.3 手册也得改成你分享的这个代码

绝大部分 spring 中使用 jfinal 的都是想用 ActiveRecordPlugin 与 Enjoy,分享很详细,点赞收藏,感谢分享

JJfinal

2017-12-23 23:03

好文章,赞!

suxiaoqiuking

2017-12-25 15:11

suxiaoqiuking

2017-12-25 15:12

顾旭凯

2018-02-03 19:51

厉害!

cuiweieee

2018-03-15 11:22

事务应该怎么办

suxiaoqiuking

2018-03-17 14:32

@cuiweieee @Before(Tx.class)

suxiaoqiuking

2018-04-25 17:23

@cuiweieee 后面写了一个类 使用spring aop 可以将事物交给spring 直接管理

suxiaoqiuking

2018-04-25 17:24

@cuiweieee 参考 这个博客 https://www.jianshu.com/p/090c8b6c1dca

cuiweieee

2018-05-03 16:01

@suxiaoqiuking 灰常nice啊,赞

私奔到冰岛

2018-10-18 16:44

model里的Dao可以直接用吗?我试着没法用啊

suxiaoqiuking

2018-11-05 14:28

@私奔到冰岛 事物和Model里的dao有关系?

阿帕奇

2019-03-09 14:27

同问一下,事务应该怎么办?

suxiaoqiuking

2019-03-10 18:38

@阿帕奇 https://www.jfinal.com/share/825

汪杂

2019-08-12 09:37

_MappingKit 里面是什么呢

suxiaoqiuking

2019-08-13 16:55

@汪杂 你的实体和表关系映射

chatcoco

2019-11-05 20:19

怎么我按这个方式报错java.lang.NullPointerException: null
at com.jfinal.plugin.activerecord.Db.findFirst(Db.java:301) ~[jfinal-4.7.jar:na]

suxiaoqiuking

2019-11-14 10:24

@chatcoco 有具体代码?

热门分享

扫码入社