搭建Jfinal+maven项目及若干问题总结

发布时间:2022-07-01 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了搭建Jfinal+maven项目及若干问题总结脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

项目准备

在idea环境中,新建maven类型项目,项目类型选择:maven-ArchetyPE-webapp,完成后在Pom文件中添加如下内容:

 <dependency>
      <groupId>com.jfinal</groupId>
      <artifactId>jfinal-undertow</artifactId>
      <version>1.9</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.1.14</version>
    </dependency>
    <dependency>
      <groupId>MySQL</groupId>
      <artifactId>;mySQL-connector-java</artifactId>
      <version>5.1.38</version>
    </dependency>

一次性把mysql驱动、连接池及运行服务器引入,这里选择undertow服务器。

新建项目结构如下所示:

搭建Jfinal+maven项目及若干问题总结

&nbsp;在[PRoject structure]菜单中,设置好项目代码目录和资目录。然后在资源目录中引入app.properties文件,作为配置文件。

配置文件内容如下所示:

jdbcUrl=jdbc:mysql://localhost:3306/col?user=root&amp;password=root&useUnicode=true&characterEncoding=utf8&autoReconnect=true&failOverReadOnly=false
username=
password=

项目配置

新建启动配置文件:Democonfig.java

public class DemoConfig extends JFinalConfig {
    public static Prop prop = PropKIT.use("app.properties");

    static DruidPlugin getDruidPlugin() {
        return new DruidPlugin(prop.get("jdbcUrl"), prop.get("username"), prop.get("password").trim());
    }

    public static void main(String[] args) {
        UndertowServer.start(DemoConfig.class, 80, true);
    }

    public void configConstant(Constants me) {
        me.setDevMode(true);
    }
    @override
    public void configRoute(Routes me) {
        me.add("/name", nameController.class);
    }

    public void configEngine(Engine me) {
    }
    @Override
    public void configPlugin(Plugins me) {
        DruidPlugin druidPlugin = getDruidPlugin();
        druidPlugin.setMinidle(1);
        druidPlugin.setMaxActive(1);

        // 添加StatFilter
        druidPlugin.adDFilter(new StatFilter());
        me.add(druidPlugin);
        ActiveRecordPlugin arp = new ActiveRecordPlugin(druidPlugin);
        me.add(arp);
        arp.setDialect(new MysqlDialect());
        _MappingKit.mapping(arp);
        arp.setShowSql(prop.getBoolean("devMode", false));
        //配置SQL模板引擎默认文件路径
        arp.getEngine().setSourceFactory(new ClassPathSourceFactory());
    }

    public void configInterceptor(Interceptors me) {
    }

    public void configHandler(Handlers me) {
    }
}

注意,需要在configPlugin函数中引入ActiveRecordPlugin实例,否则会报错:

十一月 03, 2021 2:25:04 下午 com.jfinal.core.ActionHandler error
严重: *****.controller.nameController.select() : /name/select
java.lang.NullPointerException
    at com.jfinal.plugin.activerecord.Model.find(Model.java:692)
    at com.jfinal.plugin.activerecord.Model.find(Model.java:703)
    at com.jfinal.plugin.activerecord.Model.find(Model.java:710)
    at *****.controller.nameController.select(nameController.java:20)

配置文件中引用了nameController,其内容如下:

public class nameController extends Controller {

    public void select() {
        renderText("Welcome To The JFinal World (^_^)");
    }

    public void add() {
        test test = new Test();
        test.set("name", "w2323");
        test.save();
        renderText("hello");
    }

    public void edit() {
        renderText("hello");
    }

    public void delete() {
        renderText("hello");
    }
}

运行

在Democonfig文件中,点击main方法运行,在浏览器中查看即可:

搭建Jfinal+maven项目及若干问题总结

代码生成

新建文件:ModelGenerator.java,使用jfinal自带的plugin组件生成实体代码。

public class@H_408_360@ ModelGenerator {
    private static DataSource getDataSource() {
        DruidPlugin druidPlugin = DemoConfig.getDruidPlugin();
        druidPlugin.start();
        return druidPlugin.getDataSource();
    }

    public static void main(String[] args) {
        // base model 所使用的包名
        String baSEModelPackageName = "****.***.***.model.base";
        // base model 文件保存路径
        String baseModelOutputDir = PathKit.getWebrootPath() + "/src/main/java/cn/***/model/base";
        // model 所使用的包名 (MappingKit 默认使用的包名)
        String modelPackageName = "****.collect.COMoneo.model";
        // model 文件保存路径 (MappingKit 与 DataDictionary 文件默认保存路径)
        String modelOutputDir = baseModelOutputDir + "/..";

        // 创建生成器
        Generator gen = new Generator(getDataSource(), baseModelPackageName, baseModelOutputDir, modelPackageName, modelOutputDir);
        // 设置数据库方言
        gen.setDialect(new MysqlDialect());//Sqlite3Dialect MysqlDialect
        // 设置 BaseModel 是否生成链式 setter 方法
        gen.setGenerateChainSetter(true);
        // 设置是否在 Model 中生成 DAO 对象
        gen.setGenerateDaoInModel(true);
        // 设置是否生成字典文件
        gen.setGenerateDataDictionary(true);
        // 配置是否生成字段备注
        gen.setGenerateRemarks(true);
        // 设置需要被移除的表名前缀用于生成modelName。例如表名 "Sys_user",移除前缀 "sys_"后生成的model名为 "User"而非 OscUser
        // gernerator.setRemovedTableNamePrefixes("sys_");
        // 生成
        gen.generate();
    }
}

如数据库结构发生变化,运行此文件main即可,注意:代码生成及此处配置使用了MysqlDialect数据库方言,如果连接其他类型的数据库,请修改。

备注

在新增时,jfinal框架会在save后自动引入新增实体,不用再次查询,属于自返回类型。在业务编码上确实方便了不少。

脚本宝典总结

以上是脚本宝典为你收集整理的搭建Jfinal+maven项目及若干问题总结全部内容,希望文章能够帮你解决搭建Jfinal+maven项目及若干问题总结所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。