我是小小菜,我有个关于GET 和 SET 的不解疑惑请教一下。

各位大侠: 最近刚接触Jfinal ,  看了一个文档说有介绍实体类

Model可以无xml、无annotation、无attribute、无getter、无setter ;  

但下载DEMO 看了一下代码,每个MODEL 还是 有 getter、setter 。 用 generator 生成的代码也有每个类的 getter、setter 。 那到底是用还是不用 getter、setter ;

用和不用有什么区别吗。是不是只用DB+recorder 的话就不用 GET 和SET ?  

我还是贴实习牌的新手,各位有经验的高手可否详细解答一下,非常感谢!



评论区

JFinal

2016-11-24 13:34

jfinal 所说的无 getter、setter 是指最终的 Model 中并没有 getter、setter 代码,你的 Model 是干净清爽的,所有的 getter、setter 是在 BaseModel 之中,并且是生成器自动生成的,所以不会增加开发者的工作量

jfinal 的 model 结合了 Active Record 模式的动态化与传统 java bean 的静态化优点

1:动态化优点:
动态化优点是指从数据库查出来的字段值不一定是你当前 model 所拥有,例如有 user 与 article 两张表,其中的 article 中有一个 userId 字段关联到 user,那么你可以这么用:
Article article = new Article().find("select a.*, u.nickName from article as a inner join user as u on a.userId = u.id")
然后可以利用 article 直接取出不属于 article 表的属性:
article.getStr("nickName")
这种用法在传统 java bean 模式下是无法做到的,因为传统 java bean 模式中的 article 并不存在 getNickName() 这个 getter 方法

2:静态化优点
静态化优点是指,生成 getter、setter 方法在 BaseModel 之中以后,在开发过程中有 eclipse、IDEA 这类开发工具做静态检查,减少出错的可能性,例如:article.setTitle(...) 有静态检查,而 article.set("title", ...) 并没有

一句话总结就是:jfinal 的 Model 层是一个集动态化与静态化优点于一身的设计,在常规使用的时使用 getter、setter 方法,在需要动态化的时候使用动态化的 model.set(key, value) 与 get(key) 方法

gxlzlijng

2016-11-24 15:10

谢谢,非常感谢!好像有点思路了,感觉学习jfinal 还是有点难度,可以还要多实践一下,继续学习......谢谢jfinal 的回复.

热门反馈

扫码入社