- 浏览: 168313 次
- 性别:
- 来自: 武汉
文章分类
最新评论
下面为查询所显示的分页,关键技术在:1、只从数据库读取指定数量的数据
2、点击下一页时,能够保存条件,用同样的条件进行查询显示
3、日期在前台的显示
1、返回的对象类的DTO为
MatchMedicineDto.java
package com.yihaodian.pis.dto; import java.util.ArrayList; import java.util.Date; import java.util.List; import com.yihaodian.pis.util.DateFormatUtil; public class MatchMedicineDto { /** 存储的ID */ private Integer id ; /** 一号店商品编号 */ private Integer productId; /** 一号店商品名 */ private String productCname; /** 一号店商品编码 */ private String productCode = null; /** 目标商品名 */ private String name; /** 目标商品URL */ private String pageUrl; /** 一号店分类id */ private Integer categoryId = null; private String categoryName; private Integer siteId; /** 目标网站 名 */ private String siteName; /** 匹配时间 */ private Date matchTime; private String matchTimeStr; /**标志是1一号店还是2药网的信息 */ private Integer ownSiteId = 1; private String condition; private Integer currentPage=1; private Integer iDisplayStart = 0; private Integer iDisplayLength = 20; private Integer pageCount; private List<Integer> catIdsIn; //将这个实体类里的几个属性变为一个字符串数组 // public String[] toArray(int indexNum) { // String[] ret = new String[7]; // // ret[0] = "<input type=\"checkbox\" name=\"matchId\" onclick=\"chooseMatch()\" value=\""+productId+"\"/>" ; // ret[1] = "<a href=\"http://www.111.com.cn/product/"+((productId/10)%10000000)*10000000+"\">"+productCname+"</a>" ; // ret[2] = ""+productCode; // ret[3] = ""+categoryName; // ret[4] = siteName; // ret[5] = "<a href=\""+pageUrl+"\" target=\"_blank\">"+name+"</a>"; // ret[5] = DateFormatUtil.getDate(matchTime, "yyyy-MM-dd"); // // return ret; // } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public Integer getProductId() { return productId; } public void setProductId(Integer productId) { this.productId = productId; } public String getProductCname() { return productCname; } public void setProductCname(String productCname) { this.productCname = productCname; } public String getProductCode() { return productCode; } public void setProductCode(String productCode) { this.productCode = productCode; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPageUrl() { return pageUrl; } public void setPageUrl(String pageUrl) { this.pageUrl = pageUrl; } public Integer getCategoryId() { return categoryId; } public void setCategoryId(Integer categoryId) { this.categoryId = categoryId; } public String getCategoryName() { return categoryName; } public void setCategoryName(String categoryName) { this.categoryName = categoryName; } public Integer getSiteId() { return siteId; } public void setSiteId(Integer siteId) { this.siteId = siteId; } public String getSiteName() { return siteName; } public void setSiteName(String siteName) { this.siteName = siteName; } public Date getMatchTime() { return matchTime; } public void setMatchTime(Date matchTime) { this.matchTime = matchTime; } public Integer getCurrentPage() { return currentPage; } public void setCurrentPage(Integer currentPage) { this.currentPage = currentPage; } public Integer getiDisplayStart() { return iDisplayStart; } public void setiDisplayStart(Integer iDisplayStart) { this.iDisplayStart = iDisplayStart; } public Integer getiDisplayLength() { return iDisplayLength; } public void setiDisplayLength(Integer iDisplayLength) { this.iDisplayLength = iDisplayLength; } public Integer getPageCount() { return pageCount; } public void setPageCount(Integer pageCount) { this.pageCount = pageCount; } public String getCondition() { return ownSiteId+","+productCode+","+siteId+","+categoryId; } public void setCondition(String condition) { this.condition = condition; } public Integer getOwnSiteId() { return ownSiteId; } public void setOwnSiteId(Integer ownSiteId) { this.ownSiteId = ownSiteId; } public List<Integer> getCatIdsIn() { return catIdsIn; } public void setCatIdsIn(List<Integer> catIdsIn) { this.catIdsIn = catIdsIn; } public String getMatchTimeStr() { java.text.DateFormat format=new java.text.SimpleDateFormat( "yyyy-MM-dd hh:mm:ss"); String dateString=format.format(matchTime); return dateString; } public void setMatchTimeStr(String matchTimeStr) { this.matchTimeStr = matchTimeStr; } }
2、MedicineAction.java
在这里得到LIST,以及从数据库读取的起始位置和长度的设置
public class MedicineAction extends StrutsActionAdapter { /** * author : 向旗 */ private static final long serialVersionUID = 1L; /** 匹配商品列表 */ private List<MatchMedicineDto> matchMedicineList; /** 列表 */ private MatchProductService matchProductSvc; /** 药网目录提取 */ private MedicineDao medicineDao; /** 产品匹配记录id */ private int matchId; /** 产品匹配记录id集合 */ private String matchIds; private MatchProductDao matchProductDao; /** 第一级目录 */ private List<MedicineCategoryDto> firstLevelCate; /** 父类的ID值 */ private Integer parentCategoryId; /** 临时存商品编码的信息 */ /** 商品抓价业务接口 */ private CurrentPriceService currentPriceSvc; /** 商品历史价格业务接口 */ private HistoryPriceService historyPriceSvc; /** 异常错误信息 */ private String message; private MatchMedicineDto matchMedicineDto = new MatchMedicineDto(); /** 临时转存搜索条件信息*/ private MatchMedicineDto mmDto = new MatchMedicineDto(); private Integer pageNum = 1; private Integer next = 0 ; private String condition; public String queryMedicineByCode() { if (next == 1) { String[]conf = condition.split(","); mmDto.setOwnSiteId(Integer.parseInt(conf[0])); mmDto.setProductCode(conf[1]); mmDto.setSiteId(Integer.parseInt(conf[2])); if (conf[3].equals(null) || conf[3].equals("null")) { mmDto.setCategoryId(null); }else{ mmDto.setCategoryId(Integer.parseInt(conf[3])); List<Integer> cl=new ArrayList<Integer>(); if(medicineDao.getCategoryNameById(mmDto.getCategoryId()).getCategoryIsLeaf()==1) { cl.add(mmDto.getCategoryId()); }else{ List<CategoryDto> categoryList = medicineDao.getCategoryChilds(mmDto.getCategoryId()); List<CategoryDto> fCategoryList =new ArrayList<CategoryDto>(); for(int i = 0;i<categoryList.size();i++){ if(categoryList.get(i).getCategoryIsLeaf()==1) fCategoryList.add(categoryList.get(i)); else fCategoryList.addAll(medicineDao.getCategoryChilds(categoryList.get(i).getId())); } for(int i=0;i<fCategoryList.size();i++){ cl.add(fCategoryList.get(i).getId()); } } mmDto.setCatIdsIn(cl); } Integer count = matchProductDao.searchMeCountByCode(mmDto); mmDto.setPageCount((count+19)/20); if (pageNum==0) { pageNum = 1; }else if (pageNum > ((count+19)/20)) { pageNum = ((count+19)/20); } mmDto.setCurrentPage(pageNum); mmDto.setiDisplayStart((mmDto.getCurrentPage()-1)*20); matchMedicineList = matchProductDao.searchMeByCode(mmDto); matchMedicineDto = mmDto; }else { if (matchMedicineDto.getCategoryId() == 0) { matchMedicineDto.setCategoryId(null); matchMedicineDto.setCatIdsIn(null); }else{ List<Integer> cl=new ArrayList<Integer>(); if(medicineDao.getCategoryNameById(matchMedicineDto.getCategoryId()).getCategoryIsLeaf()==1) { cl.add(matchMedicineDto.getCategoryId()); }else{ List<CategoryDto> categoryList = medicineDao.getCategoryChilds(matchMedicineDto.getCategoryId()); List<CategoryDto> fCategoryList =new ArrayList<CategoryDto>(); for(int i = 0;i<categoryList.size();i++){ if(categoryList.get(i).getCategoryIsLeaf()==1) fCategoryList.add(categoryList.get(i)); else fCategoryList.addAll(medicineDao.getCategoryChilds(categoryList.get(i).getId())); } for(int i=0;i<fCategoryList.size();i++){ cl.add(fCategoryList.get(i).getId()); } } matchMedicineDto.setCatIdsIn(cl); } Integer count = matchProductDao.searchMeCountByCode(matchMedicineDto); matchMedicineDto.setPageCount((count+19)/20); matchMedicineDto.setCurrentPage(pageNum); matchMedicineDto.setiDisplayStart((matchMedicineDto.getCurrentPage()-1)*20); matchMedicineList = matchProductDao.searchMeByCode(matchMedicineDto); } //下位读取种类名称的代码 for(int i =0;i<matchMedicineList.size();i++){ CategoryDto cd = medicineDao.getCategoryNameById(matchMedicineList.get(i).getCategoryId()); matchMedicineList.get(i).setCategoryName(cd.getCategoryName()); } return "queryMedicineByCode"; } }
3、页面的相关设置,以及跳转的参数传递
querymedicine.jsp
<table class="display" id="queryResultTbl"> <thead> <tr id="headTitle"> <th style="background-color: #5eaeae" ><input type="checkbox" id="chooseBox" onchange = "chooseAll()"/> 全选</th> <th style="background-color: #5eaeae" >药网商品链接</th> <th style="background-color: #5eaeae" >商品编码</th> <th style="background-color: #5eaeae" >药网分类</th> <th style="background-color: #5eaeae" >目标网站</th> <th style="background-color: #5eaeae" >目标商品链接</th> <th style="background-color: #5eaeae" >商品匹配时间</th> </tr> </thead> <tbody id="tobyContent" style="text-align:center"> <s:iterator value="matchMedicineList" id="matchMedicine" status="coll"> <tr align="center"> <td><input type="checkbox" name="matchId" onclick="chooseMatch()" value="${matchMedicine.id}"/></td> <td><a href="http://www.111.com.cn/product/${matchMedicine.productId}">${matchMedicine.name}</a></td> <td>${matchMedicine.productCode}</td> <td>${matchMedicine.categoryName}</td> <td>${matchMedicine.siteName}</td> <td><a href="${matchMedicine.pageUrl}" target="_blank">${name}</a></td> <td>${matchMedicine.matchTimeStr}</td> </tr> </s:iterator> </tbody> <tr><td><div> <a href="medicineAction_queryMedicineByCode.action?next=1&pageNum=1&condition=${matchMedicineDto.condition}">首页</a> <a href="medicineAction_queryMedicineByCode.action?next=1&pageNum=${matchMedicineDto.currentPage+1}&condition=${matchMedicineDto.condition}">下一页</a> <a href="medicineAction_queryMedicineByCode.action?next=1&pageNum=${matchMedicineDto.currentPage-1}&condition=${matchMedicineDto.condition}">上一页</a> <a href="medicineAction_queryMedicineByCode.action?next=1&pageNum=${matchMedicineDto.pageCount}&condition=${matchMedicineDto.condition}">尾页</a> <span>总共${matchMedicineDto.pageCount}页</span> </div> </td></tr> <tr><td><input type="button" value="删 除" class="button2" onclick="delMatch()" id="delbutton"/></td></tr></table>
不懂的问QQ526151410
相关推荐
综上所述,这个实例展示了如何整合Struts2、Spring、iBatis和Oracle来构建一个完整的Web应用,实现了动态分页搜索和附件上传功能。这种架构具有良好的可扩展性和可维护性,适用于各种中大型企业级项目。开发者可以...
这里我们讨论的是一个基于Ibatis、Struts2、Spring3的整合应用,涵盖了数据访问、业务逻辑和控制层的关键技术,以及分页和CRUD操作的实现。下面我们将详细探讨这些知识点。 1. **Ibatis**:Ibatis是一个优秀的持久...
以上就是使用Struts2、Spring和iBatis实现分页功能的基本流程。在实际开发中,你还需要考虑异常处理、国际化、性能优化等方面,确保应用的稳定性和用户体验。通过熟练掌握这三个框架的组合,你可以构建出强大且灵活...
综上所述,"简单公文管理 struts+spring+ibatis +ajax 分页"是一个集成了多种技术的Web应用,它利用Struts进行页面控制,Spring管理业务逻辑,iBatis处理数据访问,Ajax提升用户体验,共同构建了一个高效、易用的...
Struts2、Spring2、iBatis2、jQuery 和 JSON 是构建现代Web应用程序的重要技术栈。这个项目似乎演示了如何利用这些技术实现页面无刷新分页功能,这在提升用户体验和提高网页性能方面非常关键。下面我们将详细探讨...
在这个"struts2+spring+ibatis 实现分页"的项目中,我们将探讨如何将这三个框架整合起来,实现一个高效的分页功能。 首先,Struts2作为前端控制器,它处理来自客户端的请求,并调度到相应的Action进行处理。在分页...
struts spring ibatis mysql 分页,增删改查,以及导出excle
Struts2、Spring和iBatis是Java Web开发中经典的三大框架组合,它们协同工作能够构建出高效、灵活的企业级应用程序。在这个“struts2+spring+ibatis增删查改翻页代码示例”中,我们将深入探讨这三个框架如何协同实现...
标题中的"ssi_struts2_spring_ibatis"指的是一个基于Java技术栈的Web应用程序开发框架组合,主要包括Struts2、Spring和iBatis。这三个组件是企业级Java应用中的常见选择,它们各自承担着不同的职责。 1. **Struts2*...
总结起来,"struts+spring+ibatis(SSI)的最简分页及标签"是一个关于如何在Java Web开发中结合Struts的MVC架构、Spring的依赖管理和iBatis的数据访问来实现分页功能以及创建自定义标签的实践。这个过程涉及到Struts的...
总结来说,"Spring Struts2 iBatis EasyUI"是一种常见的Java Web开发架构,通过合理利用各框架的特点,可以构建出功能强大、易于维护的Web应用。对于初学者而言,这个项目是一个极好的学习资源,可以帮助他们深入...
通过以上步骤,你就成功地整合了Struts2、Spring和iBatis,并实现了存储过程分页。这样的架构有助于提高代码的模块化和可维护性,同时,存储过程的使用也能优化数据库查询性能。在实际开发中,还可以根据需求进一步...
Struts2+Spring+Ibatis学生管理Demo是一个典型的Java Web应用程序,它展示了如何将三个流行的开源框架——Struts2、Spring和Ibatis有效地集成在一起,用于构建高效且可维护的学生信息管理系统。在这个系统中,Struts...
在Struts2中,可以通过拦截器或者自定义插件来实现分页功能,而在iBatis中,可以通过编写动态SQL来实现分页查询。描述还指出“但是删除有毛病,把int改成bean就能运行了”,这可能是因为在执行删除操作时,原本直接...
使用Spring集成struts2、ibatis、poi实现的增删改查功能,包括采用jquery实现的无刷新查询机分页、dwr实现的两级联动、以及采用poi动态将数据库数据导出成excel,本demo采用mysql数据库,附有建表sql,项目导入...
总结,"Struts2+Spring+IBatis"的组合提供了强大的Web应用开发能力,能够有效地解耦业务逻辑和数据访问,简化CRUD操作,并支持复杂的分页功能。对于初学者来说,理解并实践这样的框架集成,能提升对Java Web开发的...
总的来说,这个实例项目是一个基础的Java Web应用,展示了如何将Struts2、Spring和iBatis整合使用,实现CRUD操作和分页功能。通过学习和理解这个项目,开发者可以深入掌握这三大框架的协同工作方式,为构建更复杂的...
Struts2+Spring2.5+Ibatis2.3架构是一种经典的Java Web开发技术栈,广泛应用于企业级应用系统中。这个架构结合了Struts2的MVC框架、Spring的依赖注入(DI)和面向切面编程(AOP)以及Ibatis的持久层解决方案,为...
### Struts2 + Spring + iBatis 整合详解 #### 一、概述 随着企业级应用需求的不断增加,为了更好地实现项目的模块化管理和提高代码的可维护性,越来越多的项目选择采用MVC架构模式,并结合不同的框架进行开发。...