MarmotDataset祥解

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 。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值