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 去批量处理
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 去批量处理
发布评论
评论(5)
不是,起码Db是动态化的,不是强类型。
引用来自“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 模式。
回答的详细
太感谢了!回答的很详细!
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 模式。