琪钰人生

没有最好,只有更好.

 

Java开源架构Jdon应用系统案例开发

批量查询实现
   代码:三步代码编写
 第一步、表现层编写一个查询Action,继承Jdon框架的com.jdon.strutsutil.ModelListAction,该类名称为sample.web. MessageListAction,完成getPageIterator和findModelByKey两个方法。   其中getPageIterator方法内容是业务层MessageService的调用: MessageService messageService= (MessageService) WebAppUtil.getService("messageService",request); return messageService.getAllMessages(start, count);   所以MessageService接口中必须有getAllMessages这个方法,主要功能是返回PageIterator对象 findModelByKey方法内容也是业务层MessageService的调用: MessageService messageService= (MessageService) WebAppUtil.getService("messageService", request); return messageService.getMessage((String)key);   MessageService接口中必须有getMessage方法。
第二步、业务层实现MessageService接口方法getAllMessages内容,一般是直接调用持久层MessageDao方法。
第三步、持久层实现返回PageIterator对象: public PageIterator getMessages(int start, int count) throws Exception {  String GET_ALL_ITEMS_ALLCOUNT = "select count(1) from testmessage ";  String GET_ALL_ITEMS = "select messageId from testmessage ";  return pageIteratorSolverOfMessage. getPageIterator (GET_ALL_ITEMS_ALLCOUNT, GET_ALL_ITEMS, "",start, count); }   如果有参数,可以如下查询: public PageIterator getMessages(Long categoryId, int start, int count) {  String GET_ALL_ITEMS_ALLCOUNT = "select count(1) from message where categoryId = ? ";  String GET_ALL_ITEMS = "select messageId from message where categoryId = ? ";  Collection params = new ArrayList(1);  params.add(categoryId);//参数放在Collection中 return pageIteratorSolver.getPageIterator(GET_ALL_ITEMS_ALLCOUNT, GET_ALL_ITEMS, params, start, count); }
配置之一:
Jdon框架配置文件
     本步骤主要是需要告诉jdonframework.xml我们的MessageService实现子类是什么,以及调用的MessageDao等组件,jdonframework.xml如下:
 <services> <pojoService name="messageService" class="sample.service.MessageServiceImp"/>
<component name="messageDAO" class="sample.dao.MessageDAO"/>
 <component name="constants" class="sample.Constants">
<constructor value="java:/TestDS"/></component> </services>
 因为MessageServiceImp类中调用了MessageDAO,MessageDAO中又涉及JNDI名称,所以它们之间依赖关系靠Jdon框架的IOC容器实现。MessageServiceImp必须有构造器如下:
 public class MessageServiceImp implements MessageService{  private MessageDAO messageDAO;  public MessageServiceImp(MessageDAO messageDAO){   this.messageDAO = messageDAO;  } }
 配置之二:界面流程配置
  这一步主要是struts-config.xml配置,和通常struts的ActionForm和Action配置类似: <form-beans>  …… <form-bean name="listForm" type="com.jdon.strutsutil.ModelListForm" /></form-beans>
其中com.jdon.strutsutil.ModelListForm是框架批量查询特别使用的类。
 <action name="listForm" path="/messageListAction" type="sample.web.MessageListAction" scope="request"><forward name="success" path="/messageList.jsp" /></action>
其中sample.web.MessageListAction是我们前面代码编写部分编写的代码。这样,客户端浏览器通过http://localhost:8080/ messageListAction.do就可以实现所有Message批量分页查询显示。
注意,messageList.jsp中编码和通常Struts的Jsp编码是一样的,需要使用logic:iterator从ActionForm为listForm的list字段中获取单个的Message对象,然后显示这些单个Message对象,,
如下:
<logic:iterate indexId="i" id="message" name="listForm" property="list" >
 <bean:write name="message" property="name" /> ......... </logic:iterate
在messageList.jsp中加入下面标签库可以自动显示多页,缺省一个页面显示30个条目。 <MultiPages:pager actionFormName="listForm" page="/messageListAction.do">
<MultiPages:prev name="[Prev ]" /><MultiPages:index displayCount="1" /><MultiPages:next name="[Next ]" /></MultiPages:pager>
模型Message的批量查询功能已经全部完成。

posted on 2006-03-15 12:35 宝钰 阅读(202) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航:
 

导航

统计

常用链接

留言簿(1)

随笔档案(1)

文章档案(1)

搜索

积分与排名

最新评论