2
回答
JFinal什么时候用Db.find..,什么时候用实体类.dao.find..

@JFinal 你好,想跟你请教个问题:如题,大哥应该能明白我要问的是什么,就是不知道什么时候该用Db来查,什么时候该用实体类的dao来查

举报
Moon6635
发帖于2年前 2回/1K+阅
共有2个答案 最后回答: 2年前

      Model 是 Active Record 模式,一个 model 对象唯一对应某张表中的某条记录,所以当对某个 model 进行 save()、update()、insert() 时无疑最好用 Model。既然有了 Model,那么查询也建议用 dao.find(...),因为返回的数据具有类型, 拥有了强类型语言的好处。

   如下情况需要使用 Db + Record:

1:没有创建 Model,不得不使用

2:由于Active Record 限制一个model对象对应一条记录,当需要批量操作表中的记录时需要使用Db + Record,例如,需要对 account 表中的 cash 字段统一加上 100 块钱:Db.update("update account set cash=cash+100"),这种情况下 Model 只能一条一条地处理数据,而 Db 可以利用 sql 去批量处理

3:在某些非常需要高度灵活性、通用性的系统之下使用 Db.find(...),例如做一个报表系统,其中绝大部分业务都是跨多表的联合查询的数据展现,用 Db.find(sql) 更加方便,以及拥有更大自由度。

   总之:有 model、可用 model时尽量 model.dao.find(sql)。没有 model可用、model.dao.find(...) 搞不定或者不方便搞定时用 Db + Record 模式。

--- 共有 2 条评论 ---
Moon6635太感谢了!回答的很详细! 2年前 回复
干死it回答的详细 2年前 回复

引用来自“JFinal”的评论

      Model 是 Active Record 模式,一个 model 对象唯一对应某张表中的某条记录,所以当对某个 model 进行 save()、update()、insert() 时无疑最好用 Model。既然有了 Model,那么查询也建议用 dao.find(...),因为返回的数据具有类型, 拥有了强类型语言的好处。

   如下情况需要使用 Db + Record:

1:没有创建 Model,不得不使用

2:由于Active Record 限制一个model对象对应一条记录,当需要批量操作表中的记录时需要使用Db + Record,例如,需要对 account 表中的 cash 字段统一加上 100 块钱:Db.update("update account set cash=cash+100"),这种情况下 Model 只能一条一条地处理数据,而 Db 可以利用 sql 去批量处理

3:在某些非常需要高度灵活性、通用性的系统之下使用 Db.find(...),例如做一个报表系统,其中绝大部分业务都是跨多表的联合查询的数据展现,用 Db.find(sql) 更加方便,以及拥有更大自由度。

   总之:有 model、可用 model时尽量 model.dao.find(sql)。没有 model可用、model.dao.find(...) 搞不定或者不方便搞定时用 Db + Record 模式。

是不是dao能做的事情 Db都能做?
--- 共有 1 条评论 ---
JFinal不是,起码Db是动态化的,不是强类型。 2年前 回复
顶部