如何快速写sql?

一些常用的sql,是不是jfinal里面封装了方法了?

目前只知道findById() ~~ 还有哪些呀?

比如:

SELECT * FROM t_user WHERE name = ?

这个语句,感觉jfinal这么强大的东东应该有相应的封装方法吧?

评论区

JFinal

2016-10-10 15:31

对于常用的数据库操作功能所使用的 sql 都有封装,例如 model.save()、model.update() 、model.delete()、model.findById(idValue) 等等

由于查询可能是千变万化、个性化的,所以为用户留下了传入 sql 的接口,例如这种 sql,jfinal 就完全不知道你会这么用,也不可能替你封装: find("select a.x, a.y, b.z, c.* from ta as a inner join tb as b on a.id=b.aid right join tc as c on b.cid = c.id where a.x =? and b.z =?", ...)

nbjgl

2016-10-10 20:47

根据表的一个字段来查表的一条数据 是不是时可以封装的?findByName() ... 话说使用generator生成model的时候,是不是可以连这些方法一起生成了?

JFinal

2016-10-10 21:01

@nbjgl jfinal 是极简设计,所以有一定的取舍

nbjgl

2016-10-10 21:33

也是,不一定所有的model都需要这些,并不一定所有的字段都需要findBy……但是总是感觉在一直做一些重复的事情,不同的是修改了下表名或字段名而已

JFinal

2016-10-10 21:59

@nbjgl jfinal 尽量做一些通用的功能,你感觉做的那些重复的事情,其实可以自己扩展一下,很容易,只要两步就好:
1:做一个 MyModel 继承 Model,在这个 MyModel 中实现自己需要的扩展功能
2:做一个 MyBaseModel 继承 BaseModelGenerator,覆盖掉父类中的 genClassDefine() 这个方法,将原来生成器生成的的 extends Model 改为 extends MyModel 即可让你所有的最终 model 拥有这些扩展的功能

热门反馈

扫码入社