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

Moon6635 发布于 2016/06/22 16:24
阅读 1K+
收藏 1

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

加载中
1
JFinal
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 模式。

Moon6635
Moon6635
太感谢了!回答的很详细!
干死it
干死it
回答的详细
0
Moon6635
Moon6635

引用来自“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都能做?
JFinal
JFinal
不是,起码Db是动态化的,不是强类型。
返回顶部
顶部