关于jfinal的ActiveRecord一个想法

Fanxme 发布于 2013/06/26 11:28
阅读 328
收藏 1
对JFinal非常感兴趣,尤其是ActiveRecord特性。

最近写了个demo试了一下,发现自己的所有Model类除了名字不一样以外,其内容都是一样的。

/**
* 用户信息<br>
*/
public class User extends Model<User> {
    public static final User dao = new User();
}

看了源码发现,ActiveRecord实质上是用Map来承载数据的。

既然已经使用Map了,为什么不更进一步——干掉YouModelClass,Map到底?

比如以后操作数据,使用类似的方式进行:

//获取数据列表
List<Model> userList = Model.me().find("select id,name,age from t_user");
int id = userList.get(0).getInt("id");


//获取结果中第一条数据
Model user = Model.me().findFirst("select id,name,age from t_user ... ");
int id = user.getInt("id");


//根据Id获取数据
Model user = Model.bind("t_user").findById(5);


//新增一条数据
Model.bind("t_user")
.set("id", "24").set("name", "test_name").set("age", "12")
.save()

优点:
  1. 灭掉像User这样的Model类!
  2. 省得映射Table和ModelClass。  //arp.addMapping("t_user", User.class);

@JFinal 

加载中
0
沉寂brain
沉寂brain
Model 同时也在充当dao的角色
0
JFinal
JFinal

    感谢一直以来对 JFinal 的支持。Model还是有必要存在的,至少有如下理由:

1:Model不仅可以承载数据,还可以承载业务,如果没有Model,就无法支持充血领域模型

2:Model除了承载数据、业务以外,它还建立了与数据表的关联,记录了通过反射得到的属性类型,所以才可以支持 Controller.getModel(..)方法中的类型自动转换。另外Model.save()  .update()方法也是通过Model类型信息得到tableName 来生成 sql语句的

Fanxme
Fanxme
谢谢你的解答
返回顶部
顶部