分享:Hibernate+Struts分页代码(三)

来源:互联网 发布:免费刷vip软件下载 编辑:程序博客网 时间:2024/05/03 08:31
这里是分页段的实现代码,分别继承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);
    }


本代码实例到此全部完成,希望能对还摸索着分页查询的朋友有所帮助,如果您有更好的代码实例,也请一起拿来分享,对本分页代码有好的建议,不妨写下留言,谢谢!

特别声明:转载请保留版权及代码的完整性。