db dao getbean等的使用场景

jfianl提供了很多种操作数据库的方式 

用哪种都能实现

这个设计的时候是考虑什么场景了吗

有的时候用的时候会有选择困难!!

评论区

lyh061619

2018-05-12 15:13

给你水两个场景:
1、大伙在一起吃大锅饭的时候,且项目是有具有一定规模型的大型,推荐你使得标准项目结构分为dao、service、controller,每层结构清析,团队开发、日后维护都方便,这时Db类的使用就作为辅助来用,也就是常说的江湖救急。
2、就是追求极速开发,也就当使用Generator+JavaBean自动生成工具生成bean也是一种负担时,且项目数据库、代码灵活多变时,也就是中小型项目开发,同时自己正在扛把子的时候,直选Db方案。

JFinal

2018-05-12 15:43

Model 是 Active Record 设计模式,对于创建、更新、删除操作,只能是对一条数据记录,例如:
new User().setName("James").save();
new User().findById(123).setAge(28).update();
new User().deleteById(456);

因此,model 对于需要同时创建、更新、删除多条数据表记录的功能无法实现,这个时候就需要 Db + Record 模式的帮助,例如:
Db.delete("delete from user where age < ?", 18);
Db.update("update account set cash = cash + ? where id < ?", 1000, 789);

对于查询来说,model 可以将查询结果封装成 model ,方便使用 model 上的具体的 getter 方法来获取数据,例如:
user.getName()
而 record 则只能是:
user.getStr("name")

因此,如果 model 可用则尽可能用 model ,否则使用 Db + Record 模式作为补充

最后, Db + Record 特别适合需要灵活查询的报表系统,返回值的字段高度灵活,表关联复杂的情况尤其好用,因为 Model 中的 getter 方法是固定的

haoran789

2018-05-14 11:24

@lyh061619 最初就用了一层 controller 现在采用 service+controller 自己感觉够用了 目录太多 用起来感觉太累

haoran789

2018-05-14 11:27

@JFinal 谢谢讲解 还有一点迷惑性的就是 dao 和 getmodel 的使用场景 看里面的方法都一样的 这个使用的时候有什么要区分的吗 另外明天准备加入俱乐部 欢迎我把~

热门反馈

扫码入社