JFinal 5.0.0 发布,开源十周年
这一年多以年来工作繁忙,上一次发版还是去年一月份的事了,这次趁着五一长假,发布 5.0.0 版,纪念一下 jfinal 开源十周年。
5.0.0 版本中较为重要的功能来源于公司库存管理的现实需求,该项目采用前后分离开发模式,前后端 json 交互产生了 json 注入 action 方法参数的需求。
开启 json 解析配置可自动解析 json 数据并注入 action 形参:
me.setResolveJsonRequest(true);
假定请求 json 格式如下:
{
"name": "信息论",
"publisher": "清华出版社"
}
在 action 中的接受方式如下:
public void search(String name, String publisher) {
renderJson("msg", "接收到参数:" + name + "," + publisher);
}
对象类型必然也是支持的:
{
"book": {
"name": "信息论",
"publisher": "清华出版社"
}
}
在 action 中的接受方式如下:
public void search(Book book) {
renderJson("msg", "接收到参数:" + book.getName() + "," + book.getPublisher());
}
另一个比较重要的功能是 #para 指令添加了对 sql like、in 子句的支持,大致用法如下:
### 一般用法,第二个参数传入 "like"、"in" 参数即可
select * from t title like #para(title, "like")
select * from t title like #para(title, "in")
### like 类型第一个参数支持 int 类型
select * from t title like #para(0, "like")
### like 支持左侧与右侧百分号用法
select * from t title like #para(title, "%like")
select * from t title like #para(title, "like%")
### 警告:对于 in 子句,如果 #para 第一个参数是 int 型,并且 java 代码针对 Object... 参数传入的是数组
select * from t id in #para(0, "in")
### 那么 java 代码中要将 Object... 处的参数强制转成 Object,否则参数传递不正确
Integer[] idArray = {1, 2, 3};
Db.template("findByIdArray", (Object)idArray).find();
该功能在没有引入新指令的情况下,通过扩展现有 #para 指令实现,简洁、学习成本低。
再一个实用功能是 enjoy 引擎添加了 optional chain 操作符,用法如下:
# 当 article 为 null 时不对 title 进行取值,而是直接返回 null
article?.title
# 可用于方法调用
article?.getTitle()
# 可级联操作
page?.list?.size()
# 可用在方法调回之后,以下代码在 getList() 返回 null 时可避免抛出异常
page?.getList()?.size()
由于 enjoy 是极简设计,实现此功能只用了 30 行代码。该功能一开始我是拒绝的,用上以后,嗯,挺香!
再一个比较贴心的功能是 Db.update(...)、Db.batchUpdate(...) 支持 modifyFlag 机制,仅更新修改过的字段,该功能以前只在 Model 中被支持。
由于 jfinal 已开源十年,诞生十一年,已经非常完善,所以需要新增、改进的功能已经非常之少,除了上面较为实用的功能外,其它细致打磨可下载 changelog 进行查看:
时光飞逝,至简永恒,jfinal 开源十周年之际祝你 bug 少头发多,也希望 jfinal 在下个十年里继续陪伴着你!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
ERD Online 4.0.0 新版本震撼来袭,超强国产免费在线数据建模系统
ERD Online可以帮你做... 📦 开箱即用,将注意力集中在数据结构设计上 📋 快速复制已有表结构、json 生成表 🏷 在线管理表结构,支持正向向数据库执行 🎨 将已有的数据库结构解析到软件中管理 📱 支持多种数据库连接在线管理(Mysql、Oracle、DB2、SqlServer、PostGreSql) 📡 每个需求与变动,都可以生成版本,每个版本之间可以比对差异 🎉 可将所有表结构,自动生成 word、html、md 文档,便于线下流动 。。。 甚至可以帮你定义业务领域的数据词典.... 核心功能 元数据解析 元数据管理 多数源支持(mysql、oracle、sqlserver、postgresql) 多数源同步 在线导出sql(全量或差量) 在线执行sql 数据血缘管理 团队协作 元数据导出(word、pdf、html、markdown) 官方市场一键导入 低代码平台(待建设) BI 大屏 低代码平台 官方在线预览地址: 新版:https://erd.zerocode.net.cn/ 旧版:https://www.java2e.com/ 新版本介绍及功能规划...
-
下一篇
MirageOS 4.1 发布
MirageOS 是一个库操作系统,为各种云计算和移动平台的安全、高性能网络应用构建 unikernels。开发人员可以在传统的操作系统(如 Linux 或 macOS)上编写代码。然后,他们可以将自己的代码编译成一个完全独立的、专门的 unikernel,在 Xen、KVM 管理程序和轻量级管理程序(如FreeBSD的BHyve、OpenBSD的VMM)下运行。 MirageOS 4.1 正式发布,更新内容如下: 变化 能够用相对路径制作 docteur 镜像 用 ocamlformat.0.21.0 更新项目 用 opam-monorepo.0.3.0 升级 mirage 工具并生成一个单一的 OPAM 文件 新增 添加 chamelon 设备,一个带有 littlefs 的文件系统 为 MirageOS 密钥添加 pair 组合器 更多详情可查看:https://github.com/mirage/mirage/releases/tag/v4.1.0
相关文章
文章评论
共有0条评论来说两句吧...