qq_35899105 2016-08-17 05:16 采纳率: 100%
浏览 1653
已采纳

SSH如何实现分页查询和动态查询?

北大青鸟学员一枚,最近做了几次测试。都是有关于分页查询和动态查询的题目。可是我实在不会。请问大神,SSH中如何实现分页查询和动态查询呢?

  • 写回答

5条回答 默认 最新

  • longlovetongtong 2016-08-17 05:26
    关注

    首先是动态查询总页数
    String hql = "select count(h.id) from Housex h where 1=1";
    if(hc.getDid()!=null){
    hql+=" and h.streetx.districtx.id=:did";
    }
    if(hc.getId()!=null){
    hql+=" and h.id=:id;";
    }
    if(hc.getLowfloorage()!=null){
    hql+=" and h.floorage>=:lowfloorage";
    }
    if(hc.getLowprice()!=null){
    hql+=" and h.pricex>=:lowprice";
    }
    if(hc.getSid()!=null){
    hql+=" and h.streetx.id=:sid";
    }
    if(hc.getTid()!=null){
    hql+=" and h.typex.id=:tid";
    }
    if(hc.getTitle()!=null){
    hql+=" and h.titlex like :title";
    }
    if(hc.getUid()!=null){
    hql+=" and h.usersx.id=:uid";
    }
    if(hc.getUpfloorage()!=null){
    hql+=" and h.floorage<:upfloorage";
    }
    if(hc.getUpprice()!=null){
    hql+=" and h.pricex<:upprice";
    }
    Query q = s.createQuery(hql);
    q.setProperties(hc);
    int tiao = Integer.parseInt(q.list().get(0).toString());
    return tiao%pageSize==0?tiao/pageSize:tiao/pageSize+1;

        然后是动态查询list
        public List<Housex> selectHousexByCondition(Session s, HousexCondition hc,
            int pageNo, int pageSize) {
        String hql = "from Housex h inner join fetch h.usersx u inner join fetch h.streetx s inner join fetch h.typex t inner join fetch s.districtx d where 1=1";
        if(hc.getDid()!=null){
            hql+=" and d.id=:did";
        }
        if(hc.getId()!=null){
            hql+=" and h.id=:id;";
        }
        if(hc.getLowfloorage()!=null){
            hql+=" and h.floorage>=:lowfloorage";
        }
        if(hc.getLowprice()!=null){
            hql+=" and h.pricex>=:lowprice";
        }
        if(hc.getSid()!=null){
            hql+=" and s.id=:sid";
        }
        if(hc.getTid()!=null){
            hql+=" and t.id=:tid";
        }
        if(hc.getTitle()!=null){
            hql+=" and h.titlex like :title";
        }
        if(hc.getUid()!=null){
            hql+=" and u.id=:uid";
        }
        if(hc.getUpfloorage()!=null){
            hql+=" and h.floorage<:upfloorage";
        }
        if(hc.getUpprice()!=null){
            hql+=" and h.pricex<:upprice";
        }
        Query q = s.createQuery(hql);
        q.setProperties(hc);
        q.setFirstResult((pageNo-1)*pageSize);
        q.setMaxResults(pageSize);
        return q.list();
    }
    这是hibernate的做法,如果是mybatis得自己写查询语句,但是mybatis有反向工程的代码,很好使,建议楼主去网上查查
    

    展开全部

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)
编辑
预览

报告相同问题?

问题事件

  • 已采纳回答 1月17日

悬赏问题

  • ¥100 二维码被拦截如何处理
  • ¥15 怎么解决LogIn.vue中多出来的div
  • ¥15 优博讯dt50巴枪怎么提取镜像
  • ¥30 在CodBlock上用c++语言运行
  • ¥15 求C6748 IIC EEPROM程序固化烧写算法
  • ¥50 关于#php#的问题,请各位专家解答!
  • ¥15 python 3.8.0版本,安装官方库ibm_db遇到问题,提示找不到ibm_db模块。如何解决?
  • ¥15 TMUXHS4412如何防止静电,
  • ¥30 Metashape软件中如何将建模后的图像中的植被与庄稼点云删除
  • ¥20 机械振动学课后习题求解答
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部