天天看点

ssh框架分页 oracle,ssh框架 分页

一、编写Page、PageUtil

public class Page {

// 每页显示记录数

private int pageSize;

// 总记录数

private int totalCount;

// 总页数

private int totalPage;

// 当前页

private int currentPage;

private List items = new LinkedList();

public Page(int pageSize, int totalCount, int totalPage, int currentPage, List items) {

super();

this.pageSize = pageSize;

this.totalCount = totalCount;

this.totalPage = totalPage;

this.currentPage = currentPage;

this.items = items;

}

public List getItems() {

return items;

}

public void setItems(List items) {

this.items = items;

}

public int getPageSize() {

return pageSize;

}

public void setPageSize(int pageSize) {

this.pageSize = pageSize;

}

public int getTotalCount() {

return totalCount;

}

public void setTotalCount(int totalCount) {

this.totalCount = totalCount;

}

public int getTotalPage() {

return totalPage;

}

public void setTotalPage(int totalPage) {

this.totalPage = totalPage;

}

public int getCurrentPage() {

return currentPage;

}

public void setCurrentPage(int currentPage) {

this.currentPage = currentPage;

}

}

PageUtil.java

public class PageUtil {

@SuppressWarnings("unchecked")

public static Page> createPage(int pageSize, int currentPage,int totalCount,List> items) {

pageSize = getPageSize(pageSize);

currentPage = getCurrentPage(currentPage);

int totalPage = getTotalPage(pageSize, totalCount);

return new Page(pageSize,totalCount,totalPage, currentPage,items);

}

// 设置每页显示记录数

public static int getPageSize(int pageSize) {

return pageSize <= 0 ? 10 : pageSize;

}

// 设置当前页

public static int getCurrentPage(int currentPage) {

return currentPage <= 0 ? 1 : currentPage;

}

// 设置总页数,需要总记录数,每页显示多少

public static int getTotalPage(int pageSize, int totalCount) {

int totalPage = 0;

if (totalCount % pageSize == 0) {

totalPage = totalCount / pageSize;

} else {

totalPage = totalCount / pageSize + 1;

}

return totalPage;

}

}

二、编写分页实现

1、BaseDaoImpl增加3个方法(获取总记录数量、获取分页数据、)

@SuppressWarnings({ "unchecked", "hiding" })

public T unique(final String hql, final Object... paramList) {

T countAll = (T) getHibernateTemplate().execute(new HibernateCallback() {

public T doInHibernate(Session session) throws HibernateException, SQLException {

Query query = session.createQuery(hql);

if (paramList != null) {

for (int i = 0; i < paramList.length; i++) {

query.setParameter(i, paramList[i]);

}

}

return (T) query.uniqueResult();

}

});

return countAll;

}

@SuppressWarnings({ "unchecked", "rawtypes" })

public List listPage(final String hql, final int currentPage2, final int pageSize2, final Object... paramlist) {

return getHibernateTemplate().executeFind(new HibernateCallback() {

public List doInHibernate(Session session) throws HibernateException, SQLException {

Query query = (Query) session.createQuery(hql);

if (paramlist != null) {

for (int i = 0; i < paramlist.length; i++) {

query.setParameter(i, paramlist[i]);

}

}

int pageSize = PageUtil.getPageSize(pageSize2);

int currentPage = PageUtil.getCurrentPage(currentPage2);

currentPage = currentPage - 1;

if (currentPage > -1 && pageSize > -1) {

query.setMaxResults(pageSize);

query.setFirstResult(currentPage * pageSize);

}

return query.list();

}

});

}

@SuppressWarnings("unchecked")

public Page getPageData(final String hql, final int currentPage, final int pageSize, final Object... paramlist) {

Page page = null;

String hql2 = "select count(*) " + hql;

Number tempCountAll = this.unique(hql2, paramlist);

int totalCount = tempCountAll.intValue();

List list = this.listPage(hql, currentPage, pageSize, paramlist);

page = (Page) PageUtil.createPage(pageSize, currentPage, totalCount, list);

return page;

}

2、在业务dao类中调用BaseDaoImpl的getPageData

public Page findPageKeyByName(String keyName, int pageSize, int currentPage) {

return getPageData(" from Key where keyName=? ", currentPage, pageSize, keyName);

}

3、在业务service类中增加分页接口

public Page findPageKeyName(String keyName, int pageSize, int currentPage);

4、在业务service实现类中实现分页实现

public Page findPageKeyName(String keyName, int pageSize, int currentPage) {

return userDaoImpl.findPageKeyByName(keyName, pageSize, currentPage);

}

5、测试

public void test6(){

ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");

IKeyService keyServiceImpl=(IKeyService) ctx.getBean("keyServiceImpl");

//获取第3页数据,没有10条数据

Page page2=keyServiceImpl.findPageKey(10, 3);

System.out.println(page.getItems().get(0).getKeyName());

System.out.println(page.getItems().get(0).getId());

}