MarmotDataset祥解
来源:互联网 发布:淘宝上咕咚留学怎么样 编辑:程序博客网 时间:2024/06/14 15:35
Marmot是Dorado与Spring、Struts和Hibernate框架集成的中间桥梁,采用Marmot后使得Dorado专注于表现层,把大部分的业务逻辑交由框架进行处理。
使用Marmot,要首先了解Marmot的运行机制。
下面简要介绍Marmot核心MarmotDataset的原理。
MarmotDataset类中有两个最重要的方法:doLoad(boolean createFields, boolean loadData)和invokeProvider(Object provider, DataSet dataSet)。
doLoad(boolean createFields, boolean loadData)方法用来进行字段创建或加载数据。
当createFields为true时进行字段的创建,调用父类的createFieldsFromObjectClazz();方法进行。
当loadData为ture时加载数据。在加载数据时首先判断MarmotDataset的dataProvider属性是否为空,如果为空则抛出异常;否则,通过父类获得pageSize,pageIndex,parameters,properties,并将其设置为MarmotDataset的相关属性。接着就要通过dataProvider属性的值从Spring中加载指定的Bean,调用invokeProvider方法实现数据的加载。
invokeProvider方法如:
protected void invokeProvider(Object provider, DataSet dataSet)
throws Exception {
if (DEFAULT_METHOD.equals(method)) {
((DataProvider) provider).execute(dataSet);
}
else {
/*
* 根据指定的方法名去调用DataProvider里的某个方法 完成向RecordSet里装载数据的工作
*/
Method methodhandle = provider.getClass().getMethod(method,
new Class[] { DataSet.class });
methodhandle.invoke(provider, new Object[] { dataSet });
}
}
可以看出采用了反射的方法来实现最终的数据装入的。在这个方法中要注意:该方法默认使用的是execute方法,并认为其是DataProvider的实现类中的方法,所以说,如果你不使用实现类的方式的话,即使用方法指派,那么你定义的类里面最好不要有execute方法,否则将引起错误。虽然你可以明确指定MarmatDataset的method属性为execute,但是这种方法仍然是不提倡的。
在doLoad方法中,装载数据后还要进行一些分页等的设置,这些都是一些初始的数据,其中根据pageSize来判断是否采取了分页设置,否则页面总数就为1 。
- MarmotDataset祥解
- sk_buff祥解
- CFLAGS祥解
- Eciplse祥解
- ping 祥解
- telnet祥解
- event祥解
- session祥解
- OpenSessionInViewFilter祥解
- OutputCache祥解
- select祥解
- OutputCache祥解
- “新快乐时光”祥解
- Web.Config祥解
- web.xml 祥解
- web.xml 祥解
- .NET PetShop祥解
- C++ string祥解
- 接口及继承相关方法
- 准备Scrum之旅 之 什么是敏捷开发?——《轻松Scrum之旅》(13)
- 十大数据挖掘算法
- Struts2.0 配置文件属性的详细介绍
- Flex3 快速入门: 创建您的第一个应用程序
- MarmotDataset祥解
- I2C总线协议及其应用(1)
- 未来界面设计的主流 WPF技术
- I2C总线协议及其应用(2)
- 查询重复记录
- dup,dup2函数
- Flex3快速入门: Flex 处理事件
- 诺基亚 N73 UCWEB 6.7 正式版,不用签名 可以直接安装SISX的!
- HappyBI(报表/ETL/打印)实践网应用