JFinal新版sql模板有两种Template的调用方式,你学会了吗?

最近JBolt项目中升级到了最新版JFinal,很平滑,改了个版本号轻松完成。

昨天,突然想起JFinal的新版ChangeLog中提到了Model Db里都增加了关于Sql模板更方便的书写调用方式。

所以,JBolt开发平台里,底层BaseService里关于Sql模板调用的封装和上层的调用,改成了最新的模板调用方式。

一、DaoTemplate的使用

DaoTemplate的使用很简单,new一个对象,传递Key和Data值进去,最后调用对象实例的具体方法就可以了。

model.template("find", 123).find();


例如,在JBolt开发平台中的一个查询业务,查询一个公众平台配置的自动回复规则 需要分页查询 带着关键词和几个条件。

image.png


这里的daoTemplate是BaseService里的封装:

image.png


二、DbTemplate的使用

JFinal,有Model,也有Db+record 不是吗? sql模板也不例外。

举例:在JBolt的电商模块里,删除一个商品后台分类的时候,需要判断这个商品分类是否已经被商品使用了。

image.png


新版JFinal在Sql模板调用这块做的优化,使用起来更方便了,不信一看看之前的调用方式。

需要先获得SqlPara 然后再分别获取sql字符串和参数值,传递进去。

image.png



以上两种模板,创建出来之后,可以链式调用后续方法,可调用方法名,记忆简单,和Model Db中的几乎一致,学习成本极低。

所以,建议尽快升级到JFinal最新版,更多使用sql模板。


JBolt开发平台-做JFinal自由开发者的极速开发实践,详细教程请查阅:

https://www.jianshu.com/p/a18b61aa298a

有问题可以随时咨询小木微信:

image.png


往期精彩推荐:

JBolt1.8发布,支持模板指令Html标签外加Bootstrap代码提示,甚爽!

【推荐】学JFinal不迷路,JFinal优质资源列表(欢迎反馈更新)

【视频教程】基于JFinal-undertow的项目打包与部署(linux centos7)

【公告】JFinal开发者2019腾飞计划-助力JFinal社区生态建设

评论区

elstar

2019-06-22 16:16

沙发

JFinal

2019-06-22 16:22

这个新用法的另一个美妙之处在于,你可以在 java 代码中使用 sql 模板,那么也就意味着,你可以在 java 代码的 String 变量中使用 #para 等指令,用一下 templateByString 即可:
Record ret = Db.templateByString("select * from t where id = #para(0)", 123).findFrist();

对于既需要 sql 模板的好处,又希望将 sql 写在 Java 代码中的场景是极佳的体验

JFinal

2019-06-22 16:25

在 java 代码中使用 sql 模板的另一个好处是,可以实现类似于参数命名的功能,从而减少参数的传递,例如:
Db.templateByString("select * from t where x = #para(value) and y = #para(value) ", Kv.by("value", 123)).find();

以上代码中,用到了两次 value 值,但后方用 Kv.by 传值时只需传递一次

山东小木

2019-06-22 16:34

快乐的蹦豆子

2019-06-24 17:06

enderjo

2019-07-02 11:35

更方便了。