首页
App
&
Coffee
文档
项目
分享
反馈
俱乐部
登录
注册
Db中为何没有findByIdLoadColumns
山东小木
2016-09-11 17:01
@jfinal
Model中封装了findByIdLoadColumns 用着很不错,今天尝试用Db+record 发现Db中没有封装这个方法findByIdLoadColumns
项目:
JFinal
3
2
评论区
JFinal
2016-09-11 17:59
无论是 Model 还是 Db,早在 jfinal 1.9 的时候, findById 都有重载实现 loadColumns 的功能,那时方法名全叫 findById(...),用重载实现的
到了 jfinal 2.0 添加了多主键支持,Model、Db 中的 findById 必须跟着变化,而 findById 本来重载的方法就很多了,所以添加多主键支持时,重载方案下的参数的各种组合变得很复杂,也容易让用户用错
所以 jfinal 2.0 的 Model 将该功能改了方法名,由 findById 改为了 findByIdLoadColumns,避免了重载带来的各种问题
而 jfinal 2.0 多主键支持下的 Db 类情况更加麻烦,由于 Db + Record 模式下的各种查询方法需要传入 tableName,甚至 idName,所以参数数量更加多,在使用过程中,如果将这些参数都用上,发现还不如直接在 sql 的 select 中带上这些个 columns 来得方便,并且易于理解,所以 2.0 就干脆将 Db 上的这个特性干掉了
重载是面象对象语言的很优秀的特性,但在参数过多时也会带来一些问题
回复
JFinal
2016-09-11 18:01
如果添加 Db.findByIdLoadColumns(...) 这个特性,由于参数非常多,还不如直接用 Db.findFirst("select a,b,c from ...", p1, ...pn) 来得方便快捷,而且不需要去学习那些参数的含义,降低了学习成本
回复
JFinal
2016-09-11 18:03
而对于 Model,由于 Model 事先与 table 建立了映射关系,所以在 findById(...)、findByIdLoadColumns(...) 这类查询时,tableName 与 idName 这两个参数是天然不需要的,所以此时的重载比较简洁易用
回复
山东小木
2016-09-11 18:57
@JFinal
我课程已经讲了这一点 我用的就是findfirst(sql)
回复
JFinal
2016-09-11 19:03
@小木学堂
甚爽 ^_^
回复
发送
我要反馈
热门反馈
扫码入社
到了 jfinal 2.0 添加了多主键支持,Model、Db 中的 findById 必须跟着变化,而 findById 本来重载的方法就很多了,所以添加多主键支持时,重载方案下的参数的各种组合变得很复杂,也容易让用户用错
所以 jfinal 2.0 的 Model 将该功能改了方法名,由 findById 改为了 findByIdLoadColumns,避免了重载带来的各种问题
而 jfinal 2.0 多主键支持下的 Db 类情况更加麻烦,由于 Db + Record 模式下的各种查询方法需要传入 tableName,甚至 idName,所以参数数量更加多,在使用过程中,如果将这些参数都用上,发现还不如直接在 sql 的 select 中带上这些个 columns 来得方便,并且易于理解,所以 2.0 就干脆将 Db 上的这个特性干掉了
重载是面象对象语言的很优秀的特性,但在参数过多时也会带来一些问题