JFINAL开发环境的搭建过程
- (一)学习的地址
急速开发学习:https://www.jfinal.com/
- (二)undertow模式非web项目的搭建
- 2.1mavne项目的新建
在eclipse中新建maven项目
新建时候,选择quickstar 骨架
最后生成目录结构
修改pomxml文件 内容如下
1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 3 <modelVersion>4.0.0</modelVersion> 4 5 <groupId>com.computech</groupId> 6 <artifactId>jfianl</artifactId> 7 <version>1.0.0</version> 8 <packaging>jar</packaging> 9 10 <name>jfianl</name> 11 <url>http://maven.apache.org</url> 12 13 <properties> 14 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 15 16 </properties> 17 18 <dependencies> 19 <dependency> 20 <groupId>junit</groupId> 21 <artifactId>junit</artifactId> 22 <version>3.8.1</version> 23 <scope>test</scope> 24 </dependency> 25 26 <dependency> 27 <groupId>com.jfinal</groupId> 28 <artifactId>jfinal</artifactId> 29 <version>3.7</version> 30 </dependency> 31 32 <dependency> 33 <groupId>com.jfinal</groupId> 34 <artifactId>jfinal-undertow</artifactId> 35 <version>1.5</version> 36 </dependency> 37 <dependency> 38 <groupId>io.jsonwebtoken</groupId> 39 <artifactId>jjwt</artifactId> 40 <version>0.7.0</version> 41 </dependency> 42 <dependency> 43 <groupId>org.apache.commons</groupId> 44 <artifactId>commons-lang3</artifactId> 45 <version>3.7</version> 46 </dependency> 47 <dependency> 48 <groupId>com.alibaba</groupId> 49 <artifactId>druid</artifactId> 50 <version>1.1.10</version> 51 </dependency> 52 53 <dependency> 54 <groupId>mysql</groupId> 55 <artifactId>mysql-connector-java</artifactId> 56 <version>5.1.46</version> 57 </dependency> 58 59 <dependency> 60 <groupId>com.alibaba</groupId> 61 <artifactId>fastjson</artifactId> 62 <version>1.2.55</version> 63 </dependency> 64 <dependency> 65 <groupId>org.bouncycastle</groupId> 66 <artifactId>bcprov-jdk15on</artifactId> 67 <version>1.64</version> 68 </dependency> 69 <!--加密包 --> 70 <dependency> 71 <groupId>commons-codec</groupId> 72 <artifactId>commons-codec</artifactId> 73 <version>1.10</version> 74 </dependency> 75 </dependencies> 76 </project>
修改JDK版本
如果没有问题,可以看到引用结果
设置号资源目录的输出路径
- 2.2规划一些项目的目录结构
Comm目录存放公用的通用代码,包括baseconfig,数据模型类
Model存放数据映射模型,basemodel存放基本数据模型
Control目录存放路由的control类
Service 目录存放service方法
Resources目录存放项目资源文件(包括数据库配置等其他文件)
- 2.3:新建 BaseConfig类设置jfianl的基本配置
基于JFinal的web项目需要创建一个继承自JFinalConfig类的子类,该类用于对整个web项目进行配置。 JFinalConfig子类需要实现六个抽象方法,如下所示
public class BaseConfig extends JFinalConfig { public void configConstant(Constants me) {} public void configRoute(Routes me) {} public void configEngine(Engine me) {} public void configPlugin(Plugins me) {} public void configInterceptor(Interceptors me) {} public void configHandler(Handlers me) {}
- 2.4添加数据库插件
步骤1:在resources资源目录下,新建数据配置文件db.txt
配置号数据库等属性
#jdbcUrl=jdbc:mysql://192.168.3.100/x5demo?characterEncoding=utf8&useSSL=false&zeroDateTimeBehavior=convertToNull jdbcUrl=jdbc:mysql://localhost/layuidb?characterEncoding=utf8&useSSL=false&zeroDateTimeBehavior=convertToNull #user=cmp #password=mysql user=root password=123456 devMode=true engineDevMode=true upload=d:/upload
步骤2:在配置类中加入读取properity文件的方法
步骤3:在BaseConfig类中填加插件配置
优化下,在BaseConfig中建一个方法去获取DruidPlugin
插件哪里改成直接获取
步骤4:通过代码生成器类,取数据库生成对应的model模型
代码生成器类,主要作用是根据数据库的表生成对应的model类
里面主要设置4个参数
1:baseModel的包名
2:baseModel对应的路径名
3:model包名
4:model 包路径名
生成器代码,代码如下
/** * 请勿将俱乐部专享资源复制给其他人,保护知识产权即是保护我们所在的行业,进而保护我们自己的利益 * 即便是公司的同事,也请尊重 JFinal 作者的努力与付出,不要复制给同事 * * 如果你尚未加入俱乐部,请立即删除该项目,或者现在加入俱乐部:http://jfinal.com/club * * 俱乐部将提供 jfinal-club 项目文档与设计资源、专用 QQ 群,以及作者在俱乐部定期的分享与答疑, * 价值远比仅仅拥有 jfinal club 项目源代码要大得多 * * JFinal 俱乐部是五年以来首次寻求外部资源的尝试,以便于有资源创建更加 * 高品质的产品与服务,为大家带来更大的价值,所以请大家多多支持,不要将 * 首次的尝试扼杀在了摇篮之中 */ package com.computech.common; import javax.sql.DataSource; 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; /** * Model、BaseModel、_MappingKit 生成器 */ public class _Generator { /** * 部分功能使用 Db + Record 模式实现,无需生成 com.computech.example.common.controller 的 table 在此配置 */ private static String[] excludedTable = { "news_feed_reply", // 暂不实现该功能 "project_page_view", "share_page_view", "feedback_page_view", "login_log", "sensitive_words", "upload_counter", "task_run_log", "message_tip", "friend", "project_like", "share_like", "feedback_like", "share_reply_like", "feedback_reply_like", "like_message_log", "account_role", "role_permission" }; /** * 重用 JFinalClubConfig 中的数据源配置,避免冗余配置 */ public static DataSource getDataSource() { DruidPlugin druidPlugin = BaseConfig.getDruidPlugin(); druidPlugin.start(); return druidPlugin.getDataSource(); } public static void main(String[] args) { // base com.computech.example.common.controller 所使用的包名 String baseModelPackageName = "com.computech.common.model.basemodel"; // base com.computech.example.common.controller 文件保存路径 String baseModelOutputDir = PathKit.getWebRootPath() + "/src/main/java/com/computech/common/model/basemodel"; System.out.println("输出路径:"+ baseModelOutputDir); // com.computech.example.common.controller 所使用的包名 (MappingKit 默认使用的包名) String modelPackageName = "com.computech.common.model"; // com.computech.example.common.controller 文件保存路径 (MappingKit 与 DataDictionary 文件默认保存路径) String modelOutputDir = baseModelOutputDir + "/.."; // 创建生成器 Generator gen = new Generator(getDataSource(), baseModelPackageName, baseModelOutputDir, modelPackageName, modelOutputDir); // 设置数据库方言 gen.setDialect(new MysqlDialect()); // 设置是否生成字段备注 gen.setGenerateRemarks(false); // 添加不需要生成的表名 for (String table : excludedTable) { gen.addExcludedTable(table.trim()); } // 设置是否在 Model 中生成 dao 对象 gen.setGenerateDaoInModel(true); // 设置是否生成字典文件 gen.setGenerateDataDictionary(false); // 设置需要被移除的表名前缀用于生成modelName。例如表名 "osc_user",移除前缀 "osc_"后生成的model名为 "User"而非 OscUser // gernerator.setRemovedTableNamePrefixes("t_"); // 生成 gen.generate(); } }
可以把生成器,放到你项目目录下
做一些配置,就可以直接运行这个类
生成器会自动生成对应的model类如下图
修改baseConfig类的插件方法
用_MappingKit去设置表与对象的映射关系
配置点
这是不需生成的表
这是添加数据源,直接用插件里的数据源
生成器的问题,可以参考学习网站的5.4部分
步骤5:上面工作完成后,做下测试看能否访问数据库表
测试步骤1:新建一个userControl.java 继承与 Controller
测试步骤2:在BaseConfig中配置控制器的映射路径
测试步骤3:新建一个UserService类添加增删改查的方法
测试步骤4:在步骤1的userControl控制类中添加对应的数据操作方法
Index方法,默认的映射路径为 http://localhost:80/user
Add方法的映射路径:http://localhost:80/user/add
Edit方法的映射路径:http://localhost:80/user/edit
Del方法的映射路径:http://localhost:80/user/del
测试步骤5:在浏览器输入请求,查看是否可以拿到数据
启动服务:
这里run这个类
在浏览器输入
拿到数据,表示index方法拿到数据库数据
步骤3:在BaseConfig类中填加插件配置