这里是分页段的实现代码,分别继承AbstractSearch和AbstractList,实现预查询和分页查询:SearchCompany(预查询)、BaseComSearch(分页查询),代码如下:
/*****************************SearchCompany类******************************/
package com.nyhr.struts.search;
import com.nyhr.struts.frame.AbstractSearch;
import com.nyhr.struts.form.SearchCompanyForm;
import org.apache.struts.action.ActionForm;
public class SearchCompany extends AbstractSearch{
private StringBuffer sql;
private SearchCompanyForm form;
private TempWhere bean;
/**直接由默认查询语句构造 */
public SearchCompany(){
sql = new StringBuffer("select companyId from SysCompany");
}
/**
* 由指定查询语句查询
* @param hql
*/
public SearchCompany(String hql){
sql = new StringBuffer(hql);
}
/**
* 由formBean构造查询语句及参数实体
* @param form
*/
public SearchCompany(ActionForm form){
sql = new StringBuffer("");
sql.append("select c.companyId from Company as c left join fetch c.companyProps as p left join fetch c.contactInfo as ct ");
this.form = (SearchCompanyForm)form;
condition();
}
/**调用父类的带参查询返回结果*/
public Object[] getList(){
if(sql==null) return null;
if(bean==null)
return getIDList(sql.toString());
else
return getIDList(sql.toString(), bean);
}
/**
* 条件查询(条件语句及参数实体在此设定)
*/
protected void condition(){
bean = new TempWhere();
sql.append(" WHERE p.lockedFlag=0 ");
if(!form.getCompanyName().equals("")){
sql.append(" AND c.companyName=:companyName");
bean.setCompanyName(form.getCompanyName());
}
if (!form.getLinkTel().equals("")){
sql.append(" AND ct.linkTel=:linkTel");
bean.setLinkTel(form.getLinkTel());
}
if (!form.getLinkFax().equals("")){
sql.append(" AND ct.linkFax=:linkFax");
bean.setLinkFax(form.getLinkFax());
}
if (!form.getLinkEmail().equals("")){
sql.append(" AND ct.linkEmail=:linkEmail");
bean.setLinkEmail(form.getLinkEmail());
}
if (!form.getLinkman().equals("")){
sql.append(" AND ct.linkman=:linkman");
bean.setLinkman(form.getLinkman());
}
if (!form.getRepute().equals("")){
sql.append(" AND p.repute=:repute");
bean.setRepute(Short.parseShort(form.getRepute()));
}
if (!form.getSpecification().equals("")){
sql.append(" AND p.specification=:specification");
bean.setSpecification(Short.parseShort(form.getSpecification()));
}
if (!form.getVipFlag().equals("")){
sql.append(" AND p.vipflag=:vipFlag");
bean.setVipFlag(Short.parseShort(form.getVipFlag()));
}
if (!form.getDistrict().equals("")){
sql.append(" AND p.district=:district");
bean.setDistrict(Short.parseShort(form.getDistrict()));
}
if (!form.getFealty().equals("")){
sql.append(" AND p.fealty=:fealty");
bean.setFealty(Short.parseShort(form.getFealty()));
}
if (!form.getSourceFlag().equals("")){
sql.append(" AND p.sourceFlag=:sourceFlag");
bean.setSourceFlag(Short.parseShort(form.getSourceFlag()));
}
if (!form.getCompanyProps().equals("")){
sql.append(" AND c.companyProps_1=:companyProps");
bean.setCompanyProps(Short.parseShort(form.getCompanyProps()));
}
if (!form.getCalling().equals("")){
sql.append(" AND p.calling=:calling");
bean.setCalling(Short.parseShort(form.getCalling()));
}
}
class TempWhere{
/** companyProps property */
private short companyProps;
/** linkman property */
private String linkman;
/** fealty property */
private short fealty;
/** comapnyName property */
private String companyName;
/** district property */
private short district;
/** lockedFlag property */
private byte lockedFlag;
/** linkFax property */
private String linkFax;
/** specification property */
private short specification;
/** linkEmail property */
private String linkEmail;
/** sourceFlag property */
private short sourceFlag;
/** linkTel property */
private String linkTel;
/** repute property */
private short repute;
/** calling property */
private short calling;
/** vipFlag property */
private short vipFlag;
public TempWhere() {
super();
// TODO 自动生成构造函数存根
}
public TempWhere(short companyProps, String linkman, short fealty, String companyName, short district, byte lockedFlag, String linkFax, short specification, String linkEmail, short sourceFlag, String linkTel, short repute, short calling, short vipFlag) {
super();
// TODO 自动生成构造函数存根
this.companyProps = companyProps;
this.linkman = linkman;
this.fealty = fealty;
this.companyName = companyName;
this.district = district;
this.lockedFlag = lockedFlag;
this.linkFax = linkFax;
this.specification = specification;
this.linkEmail = linkEmail;
this.sourceFlag = sourceFlag;
this.linkTel = linkTel;
this.repute = repute;
this.calling = calling;
this.vipFlag = vipFlag;
}
public short getCalling() {
return calling;
}
public void setCalling(short calling) {
this.calling = calling;
}
public String getCompanyName() {
return companyName;
}
public void setCompanyName(String companyName) {
this.companyName = companyName;
}
public short getCompanyProps() {
return companyProps;
}
public void setCompanyProps(short companyProps) {
this.companyProps = companyProps;
}
public short getDistrict() {
return district;
}
public void setDistrict(short district) {
this.district = district;
}
public short getFealty() {
return fealty;
}
public void setFealty(short fealty) {
this.fealty = fealty;
}
public String getLinkEmail() {
return linkEmail;
}
public void setLinkEmail(String linkEmail) {
this.linkEmail = linkEmail;
}
public String getLinkFax() {
return linkFax;
}
public void setLinkFax(String linkFax) {
this.linkFax = linkFax;
}
public String getLinkman() {
return linkman;
}
public void setLinkman(String linkman) {
this.linkman = linkman;
}
public String getLinkTel() {
return linkTel;
}
public void setLinkTel(String linkTel) {
this.linkTel = linkTel;
}
public byte getLockedFlag() {
return lockedFlag;
}
public void setLockedFlag(byte lockedFlag) {
this.lockedFlag = lockedFlag;
}
public short getRepute() {
return repute;
}
public void setRepute(short repute) {
this.repute = repute;
}
public short getSourceFlag() {
return sourceFlag;
}
public void setSourceFlag(short sourceFlag) {
this.sourceFlag = sourceFlag;
}
public short getSpecification() {
return specification;
}
public void setSpecification(short specification) {
this.specification = specification;
}
public short getVipFlag() {
return vipFlag;
}
public void setVipFlag(short vipFlag) {
this.vipFlag = vipFlag;
}
}
}
/*****************************BaseComSearch类******************************/
package com.nyhr.struts.search;
import com.nyhr.struts.frame.AbstractList;
import com.nyhr.struts.page.Page;
import org.apache.struts.action.ActionForm;
public class BaseComSearch extends AbstractList {
/**预查询分页,由默认HQL构造初始化查询*/
public BaseComSearch(){
super(new SearchCompany());
}
/**预查询分页,由指定HQL构造初始化查询*/
public BaseComSearch(String hql){
super(new SearchCompany(hql));
}
/**
* 预查询分页,由ActionForm构造初始化查询
* @param form formBean
*/
public BaseComSearch(ActionForm form){
super(new SearchCompany(form));
}
/**
* 查询分页(分页查询)
* @param idList
* @param page
*/
public BaseComSearch(Object[] idList,Page page){
super(page, idList);
}
@Override
public String getHql(){
return "from SysCompany sc where sc.companyId in (:idList)";
}
}
BaseComSearch类是对外的入口,Action调用的代码如下(加粗部分就是调用的指令):
/*****************************预查询分页调用******************************/
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {
SearchCompanyForm searchCompanyForm = (SearchCompanyForm) form;
// TODO Auto-generated method stub
BaseComSearch com = new BaseComSearch(searchCompanyForm);
Result result = com.getResult();
String idList = com.getIdList();
List list = result.getContent();
Page page = result.getPage();
request.setAttribute("idList",idList);
request.setAttribute("list",list);
request.setAttribute("page",page);
request.setAttribute("search",searchCompanyForm);
//return null;
return mapping.findForward("search");
}/*****************************查询分页调用******************************/
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {
// TODO Auto-generated method stub
int totalRecords = Integer.parseInt(request.getParameter("totalRecords"));
int everyPage = Integer.parseInt(request.getParameter("everyPage"));
int currentPage = Integer.parseInt(request.getParameter("currentPage"));
Page page = PageUtil.createPage(everyPage,currentPage,totalRecords);
System.out.println("totalRecords:"+totalRecords+" everyPage:"+everyPage+" currentPage:"+currentPage);
Result result;
String forward;
String idList = request.getParameter("idList");
if(idList ==null || idList.equals("")){
result = new BaseComSearch().getResult();
request.setAttribute("idList","");
forward="page";
}else{
Object[] idLists = StringUtil.stringToArray(idList,"[^//d]+|,");
System.out.println(idLists[2]);
result = new BaseComSearch(idLists,page).getResult();
request.setAttribute("idList",idList);
forward="pages";
}
List list = result.getContent();
request.setAttribute("page",page);
request.setAttribute("list",list);
return mapping.findForward(forward);
}
本代码实例到此全部完成,希望能对还摸索着分页查询的朋友有所帮助,如果您有更好的代码实例,也请一起拿来分享,对本分页代码有好的建议,不妨写下留言,谢谢!
特别声明:转载请保留版权及代码的完整性。