跳至主要內容

2.JFinal框架学习笔记

holic-x...大约 4 分钟框架JFinal

JFinal框架-JFinal框架学习笔记

[TOC]

JFinal入门基础学习

【1】整体项目配置

​ 基于JFinal的web项目需要创建一个继承自JFinalConfig类的子类,该类用于对整个web项目进行配置。JFinalConfig子类需要实现六个抽象方法(快捷键引入),如下所示:

image-20201002092344982

​ 参考链接:https://jfinal.com/doc

​ 在项目开发中结合实际项目应用场景对配置进行说明便于理解

JFinal项目实战学习

【2】MVC开发模式

a.Model定义

​ JFinal中的Model对象有两种操作方式,一种是通过明确的映射进行设定,一种是通过Record通用实体类进行字段匹配

>方式1:通过继承Model<ClassName>泛型实现,并相应配置映射

image-20201002092749431

​ 在MainConfig.java方法中载入“数据库-实体”映射

image-20201002093427181

方式2:通过Record通用实体类直接操作(无需配置映射)

set属性与数据库字段保持一致即可

Record user = new Record().set("name", "James").set("age", 25);

​ 此外,可借助XXXDTO封装数据传输对象,举例说明:一个订单对应订单列表详情

public class OrderDTO {
	private String orderName;
	public String List<Items> itemList;
}

​ 但实际上亦可借助JSON相关工具类结合Map实现数据封装

image-20201002093604281

image-20201002093616070

b.DAO层

​ 数据库操作层可有两种方式操作:一是借助Model的dao进行数据库操作;二是借助“Record+Db”的模式进行数据库操作

(1)“Model+dao”模式

​ Model中定义的 public static final xxxModel dao对象是全局共享的,只能用于数据库查询,不能用于数据承载对象。数据承载需要使用new xxxModel().set(…)来实现,常见Model用法说明如下:

image-20201002093712747

​ 结合数据库模板(template)的使用(模板需要在MainConfig中进行配置,载入sql模板数据)

arp.addSqlTemplate("xxx.sql");

image-20201002093739079

(2)“Record+Db”模式(通用)
常见sql(CRUD)用法

​ Db类及其配套的Record类,提供了在Model类之外更为丰富的数据库操作功能。使用Db与Record类时,无需对数据库表进行映射,Record相当于一个通用的Model。以下为Db + Record模式的一些常见用法:

image-20201002093831477

结合数据库模板(template)的使用(模板需要在MainConfig中进行配置,载入sql模板数据)

arp.addSqlTemplate("xxx.sql");

image-20201002093855565

借助template模板返回指定类型的数据:
泛型T接收:Db.template("namespace.methodName", cond).query();
Record接收:Db.template("namespace.methodName", cond).find();
其他操作:
	自定义修改操作:Db.template("namespace.methodName", cond).updete();
自定义删除操作:Db.template("namespace.methodName", cond).delete();

​ sql模板相关实际可参考MyBatis(MyBatis提供了“动态sql模板”,可以灵活通过各种标签(<where><if><foreach>等)封装sql代码),通过编写预编译sql代码实现

image-20201002093941288

​ Model类在执行删除语句的时候可以使用deleteById()方法,该方法的使用需要数据库字段具有主键(数据库设计每张表都具有一个主键)。JFinal中model.dao.find(sql)方法不能执行delete操作, Db.update 方法底层用的是 javax.sql.PreparedStatement.executeUpdate(...),即JDBC底层也是用update方法来做 delete操作。

image-20201002094012306

JFinal高级sql模板应用

查找指定某一集合的数据:in、not in

image-20201002094154856

​ 实际应用:动态指定参数集合,不在sql模板中写死状态数据,DAO层设定参数集合,在sql模板中进行循环遍历封装筛选数据

​ 筛选出要清理的问卷信息,循环遍历调用方法删除指定问卷数据

image-20201002094228563

​ 问卷信息清理:先根据问卷id清理关联的问题数据随后删除问卷主体信息(主外键关联关系处理)

image-20201002094245398

(3)数据分页查询

JFinal分页插件调用

如果传入pn为null会报空指针异常,必须指定值(约定前端给定的数据格式)

image-20201002094352686

c.Service层

​ 在实际应用中应该将 dao 对象放在 Service 中,并且让其成为 private,这样可以保障 sql 以及数据库操作被限定在 service 层中

image-20201002094445388

d.Controller层

image-20201002094505830

随即通过https://ip:[port]/项目名称/路由映射/方法名直接访问

评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v3.1.3