首页 > 技术文章 > jfinal 整合到其他框架内

lccsdncnblogs 2021-06-16 14:10 原文

1 首先去maven官网 引入jfinal 包

        <!-- jfinal -->
        <dependency>
            <groupId>com.jfinal</groupId>
            <artifactId>jfinal</artifactId>
            <version>4.8</version>
        </dependency>

2创建主键映射类

/**
 * 主键映射类
 */
public class _MappingKit {

    public static void mapping(ActiveRecordPlugin arp) {
        
    }
}

 

2 项目启动初始化final环境

import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.plugin.druid.DruidPlugin;
import org.springblade.common.model._MappingKit;
import org.springblade.common.tool.CommonUtil;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.stereotype.Service;

import java.util.Properties;


@Service
public class InitListener implements ApplicationListener<ContextRefreshedEvent> {

    private Properties p = CommonUtil.getProperties();

    @Override
    public void onApplicationEvent(ContextRefreshedEvent event) {
        DruidPlugin druidPlugin = new DruidPlugin(p.getProperty("url"), p.getProperty("username"), p.getProperty("password"));
        ActiveRecordPlugin arp = new ActiveRecordPlugin(druidPlugin);
        _MappingKit.mapping(arp);
        druidPlugin.start();
        arp.start();
    }

}

 

3 项目中创建 实体启动类 _generator

import com.jfinal.kit.PathKit;
import com.jfinal.plugin.activerecord.dialect.MysqlDialect;
import com.jfinal.plugin.activerecord.generator.Generator;
import com.jfinal.plugin.druid.DruidPlugin;

import javax.sql.DataSource;

/**
 * 本 demo 仅表达最为粗浅的 jfinal 用法,更为有价值的实用的企业级用法
 * 详见 JFinal 俱乐部: https://jfinal.com/club
 *
 * 在数据库表有任何变动时,运行一下 main 方法,极速响应变化进行代码重构
 */
public class _generator {

    public static DruidPlugin createDruidPlugin() {

        return new DruidPlugin("jdbc:mysql://localhost:3306/xxx?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&serverTimezone=GMT%2B8", "root", "123456");
    }
    public static DataSource getDataSource() {
        DruidPlugin druidPlugin = createDruidPlugin();
        druidPlugin.start();
        return druidPlugin.getDataSource();
    }

    public static void main(String[] args) {
        // model 所使用的包名 (MappingKit 默认使用的包名)
        String modelPackageName = "org.springblade.common.model";

        // base model 所使用的包名
        String baseModelPackageName = modelPackageName + ".base";

        // base model 文件保存路径
        String baseModelOutputDir = PathKit.getWebRootPath()
                + "/src/main/java/" + baseModelPackageName.replace('.', '/');

        System.out.println("输出路径:"+ baseModelOutputDir);

        // model 文件保存路径 (MappingKit 与 DataDictionary 文件默认保存路径)
        String modelOutputDir = baseModelOutputDir + "/..";

        // 创建生成器
        Generator generator = new Generator(getDataSource(), baseModelPackageName, baseModelOutputDir, modelPackageName, modelOutputDir);

        // 配置是否生成备注
        generator.setGenerateRemarks(true);

        // 设置数据库方言
        generator.setDialect(new MysqlDialect());

        // 设置是否生成链式 setter 方法,强烈建议配置成 false,否则 fastjson 反序列化会跳过有返回值的 setter 方法
        generator.setGenerateChainSetter(false);

        // 添加不需要生成的表名
        generator.addExcludedTable("adv");

        // 设置是否在 Model 中生成 dao 对象
        generator.setGenerateDaoInModel(true);

        // 设置是否生成字典文件
        generator.setGenerateDataDictionary(false);

        // 设置需要被移除的表名前缀用于生成modelName。例如表名 "osc_user",移除前缀 "osc_"后生成的model名为 "User"而非 OscUser
        //generator.setRemovedTableNamePrefixes("t_");

        // 生成
        generator.generate();
    }
}

 

推荐阅读