Hibernate+Struts+Spring 实现的通用分页查询

 

Hibernate+Struts+Spring 实现的通用分页查询

                                                                               

1:分页查询的实体(PageModel.java)

代码:

package com.ps.model;

import java.util.List;

public class PageModel<T> {

    private int currentPage;//当前页

    private int sumcount;//总的记录条数

    private int sumpage;//总的页数

    private int current_count;//每页记录条数

    private List<T> list;//数据集

    public int getCurrentPage() {

        return currentPage;

    }

    public void setCurrentPage(int currentPage) {

        this.currentPage = currentPage;

    }

    public int getSumcount() {

        return sumcount;

    }

    public void setSumcount(int sumcount) {

        //计算总的页数

    int s = (int)Math.ceil(sumcount/(float)current_count);

        if(s==0) s=1;

        this.sumpage = s;

        this.sumcount = sumcount;

    }

    public int getSumpage() {

        return sumpage;

    }

    public int getCurrent_count() {

        return current_count;

    }

    public void setCurrent_count(int currentCount) {

        current_count = currentCount;

    }

    public List<T> getList() {

        return list;

    }

    public void setList(List<T> list) {

        this.list = list;

    }

}

2:创建分页接口(IpageModelDao.java):

代码:

package com.fund.dao;

import com.fund.model.PageModel;

public interface IPageModelDao {

    /**

     * 分页查询

     * @param hql 查询的hql语句

     * @param currentPage 当前页

     * @param Current_count 每页显示记录条数

     * @return

     */

    public PageModel queryPage(final String hql,final int currentPage,final int Current_count);

}

 

3:创建分页的dao(PageModelDaoImpl.java)实现接口IpageModelDao的方法

代码:

package com.ps.dao.impl;

import java.sql.SQLException;

import java.util.List;

import org.hibernate.HibernateException;

import org.hibernate.Session;

import org.springframework.orm.hibernate3.HibernateCallback;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.ps.dao.IPageModelDao;

import com.ps.model.PageModel;

public class PageModelDaoImpl extends HibernateDaoSupport implements IPageModelDao {

   

    /**

     *

     * 分页查询的方法

     * @param currentPage 当前页

     * @param Current_count 每页显示条数

     * @param hql hql查询语句

     * @return

     */

public PageModel queryPage(final String hql,final int currentPage,final int Current_count){

        PageModel pm = new PageModel();//创建分页对象

        pm.setCurrentPage(currentPage);//设置当前页

        pm.setCurrent_count(Current_count);//设置每页显示条数

        //设置总的记录条数

        pm.setSumcount(super.getHibernateTemplate().find(hql).size());

        //通过hql语句获取数据

        List list = super.getHibernateTemplate().executeFind(new HibernateCallback() {

            public List doInHibernate(Session session)

                    throws HibernateException, SQLException {

    return session.createQuery(hql) .setFirstResult((currentPage-1)*Current_count)

                            .setMaxResults(Current_count).list();

                                                                                    }

        });

        pm.setList(list);//设置数据

        return pm;

    }

}

4.在applicationContext.xml添加分页的配置

<!--配置分页的dao  -->

<bean id="PageModelDao" class="com.ps.dao.impl.PageModelDaoImpl">

    <property name="sessionFactory" ref="sessionFactory"/>

</bean>

 

5.在util包创建BeanFactoryUtil.java类中写静态方法getInterface(),实现获取Bean对象(为了方便获取Bean而封装的方法)

代码:

package com.ps.util;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class BeanFactoryUtil {

    /**

     * 获取bean

     * @param idaoName Bean的id                                            

     * @return Object

     */

    public static Object getInterface(String idaoName){

        return new ClassPathXmlApplicationContext("applicationContext.xml").getBean(idaoName);

    }

}

/****************************************************************/

封装的分页方法的使用:

    例如:

         public PageModel<NewsInfo> queryALL(final int currentPage,final int newsTypeId,final int Current_count) {

       

IPageModelDao idao = (IPageModelDao) BeanFactoryUtil.getInterface("PageModelDao");

        return idao.queryPage("from NewsInfo", currentPage, Current_count);

    }

                                              

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值