各位大侠: 最近刚接触Jfinal , 看了一个文档说有介绍实体类
Model可以无xml、无annotation、无attribute、无getter、无setter ;
但下载DEMO 看了一下代码,每个MODEL 还是 有 getter、setter 。 用 generator 生成的代码也有每个类的 getter、setter 。 那到底是用还是不用 getter、setter ;
用和不用有什么区别吗。是不是只用DB+recorder 的话就不用 GET 和SET ?
我还是贴实习牌的新手,各位有经验的高手可否详细解答一下,非常感谢!
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) 方法