....根本不用放页面上的... 如果用hibernate public List find(int page, int limit, String query, Object... values) { Query q = getHibernateTemplate().getSessionFactory() .getCurrentSession().createQuery(query); //q.setCacheable(true); q.setFirstResult((page - 1) * limit); q.setMaxResults(limit); for (int i = 0; i < values.length; ++i) q.setParameter(i, values[i]); List list = q.list(); return list; } 如果只是jdbc的话要看用什么数据库写不同的sql了
public List find(int page, int limit) { String sql = "select * from tableName limit ("+(page-1)*limit+","+limit+")";//mysql return stmt.executeQuery(sql); }
怎么可能呢..用struts + hibernate做就不需要啊... 给你个例子看看:/** * showConfirmorders method mainly in the pages to display data * * @param mapping * @param form * @param request * @param response * @author wuwenqiang */ public ActionForward showConfirmorders(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { String method = "showConfigmoders"; String userId = (String) request.getSession().getAttribute("Portal"); int row; int startPage; int currentPage; int counts; int pageNumPerPag; String flag = "other_time"; List<OrderHistory> list_all = new LinkedList<OrderHistory>(); try { String current = request.getParameter("currentPage"); List globalSettings = _am.queryALlGlobalSettings(); int figure = DateManager.getInstance().compareTime(globalSettings); if (figure == Constant.BREAKFAST_TIME_FIGURE) { flag = "bf_time"; } else if (figure == Constant.LUNCH_TIME_FIGURE) { flag = "lunch_time"; } else if (figure == Constant.DINNER_TIME_FIGURE) { flag = "dinner_time"; } DateManager.getInstance().compareTime(_am.queryALlGlobalSettings()); long timeMillisStart = DateManager.getInstance() .get_timeMillisStart(); long timeMillisEnd = DateManager.getInstance().get_timeMillisEnd(); if (current == null || current.trim().equals("")) { currentPage = Constant.CURRENT_PAGE; } else { currentPage = Integer.parseInt(current); } counts = _am.countOrderHistory(timeMillisStart, timeMillisEnd); pageNumPerPag = Constant.PAGE_NUMPERPAG; row = Constant.ROW; startPage = (currentPage - 1) * row; List list = _am.queryOrderHistoryByPage(timeMillisStart, timeMillisEnd, startPage, row); List cancel_List = _am.cancelOrderHistory(timeMillisStart); if (list == null || list.size() <= 0) { request.setAttribute("list_all", list); this.debug(userId, method, Constant.LOG_QUERY_FAIL); return mapping.findForward("list"); } else { list_all = _ohOperation.addOrderHistory(list); Pagination page = new Pagination(list_all, counts, currentPage, row, pageNumPerPag); request.setAttribute("webString", page.getWebString()); request.setAttribute("list_all", list_all); request.setAttribute("cancel_list", cancel_List); request.setAttribute("flag", flag); this.debug(userId, method, Constant.LOG_QUERY_SUCCESS); return mapping.findForward("list"); } } catch (ManagerException e) { e.printStackTrace(); this.error(userId, method, "hibernate exception", e); } this.debug(userId, method, Constant.LOG_QUERY_FAIL); return mapping.findForward("return_error"); }
我从来不放在jsp页面上,在java类中将被调用的方法,在创建时,设置好所要传递的参数不就OK了, 比如:public List test(String sqlcond,int curpge,int unitpage){ String sql=""}
现在谁还把分页放JSP页面上啊都有数据层了哦 呵呵如果是刚开始学的话,那就放在上面
看你是使用的什么框架了比如Hibernate+Spring就很好啊 public List getUsers(int pageSize, int startRow) throws HibernateException { final int pageSize1 = pageSize; final int startRow1 = startRow; return this.getHibernateTemplate().executeFind(new HibernateCallback() { public List doInHibernate(Session session) throws HibernateException, SQLException { Query query = session.createQuery("from Users"); query.setFirstResult(startRow1); query.setMaxResults(pageSize1); return query.list(); } }); } public int getUserCount() { return ((Long) getSession().createQuery("select count(*) from Users") .list().get(0)).intValue(); }
用mysql的limit做出来了,等完成这任务了再来试其他方法,先就这样做吧,呵呵,多谢各位了!
public ArrayList<Article> getArticleList(int fk_article, int account, int perPage) { ... String sql = "select * from article where fk_blog = ? limit " + (account - 1) * perPage + "," + perPage;//account表示现在已经是第几条了,perPage是每页显示的数目 ... }
如果用hibernate
public List find(int page, int limit, String query, Object... values) {
Query q = getHibernateTemplate().getSessionFactory()
.getCurrentSession().createQuery(query);
//q.setCacheable(true);
q.setFirstResult((page - 1) * limit);
q.setMaxResults(limit);
for (int i = 0; i < values.length; ++i)
q.setParameter(i, values[i]);
List list = q.list();
return list;
}
如果只是jdbc的话要看用什么数据库写不同的sql了
String sql = "select * from tableName limit ("+(page-1)*limit+","+limit+")";//mysql
return stmt.executeQuery(sql);
}
给你个例子看看:/**
* showConfirmorders method mainly in the pages to display data
*
* @param mapping
* @param form
* @param request
* @param response
* @author wuwenqiang
*/
public ActionForward showConfirmorders(ActionMapping mapping,
ActionForm form, HttpServletRequest request,
HttpServletResponse response) {
String method = "showConfigmoders";
String userId = (String) request.getSession().getAttribute("Portal"); int row;
int startPage;
int currentPage;
int counts;
int pageNumPerPag;
String flag = "other_time"; List<OrderHistory> list_all = new LinkedList<OrderHistory>(); try {
String current = request.getParameter("currentPage"); List globalSettings = _am.queryALlGlobalSettings();
int figure = DateManager.getInstance().compareTime(globalSettings); if (figure == Constant.BREAKFAST_TIME_FIGURE) {
flag = "bf_time";
} else if (figure == Constant.LUNCH_TIME_FIGURE) {
flag = "lunch_time";
} else if (figure == Constant.DINNER_TIME_FIGURE) {
flag = "dinner_time";
} DateManager.getInstance().compareTime(_am.queryALlGlobalSettings());
long timeMillisStart = DateManager.getInstance()
.get_timeMillisStart();
long timeMillisEnd = DateManager.getInstance().get_timeMillisEnd(); if (current == null || current.trim().equals("")) {
currentPage = Constant.CURRENT_PAGE;
} else {
currentPage = Integer.parseInt(current);
} counts = _am.countOrderHistory(timeMillisStart, timeMillisEnd);
pageNumPerPag = Constant.PAGE_NUMPERPAG;
row = Constant.ROW;
startPage = (currentPage - 1) * row; List list = _am.queryOrderHistoryByPage(timeMillisStart,
timeMillisEnd, startPage, row);
List cancel_List = _am.cancelOrderHistory(timeMillisStart); if (list == null || list.size() <= 0) {
request.setAttribute("list_all", list);
this.debug(userId, method, Constant.LOG_QUERY_FAIL);
return mapping.findForward("list"); } else {
list_all = _ohOperation.addOrderHistory(list);
Pagination page = new Pagination(list_all, counts, currentPage,
row, pageNumPerPag);
request.setAttribute("webString", page.getWebString());
request.setAttribute("list_all", list_all);
request.setAttribute("cancel_list", cancel_List);
request.setAttribute("flag", flag);
this.debug(userId, method, Constant.LOG_QUERY_SUCCESS);
return mapping.findForward("list");
}
} catch (ManagerException e) {
e.printStackTrace();
this.error(userId, method, "hibernate exception", e);
} this.debug(userId, method, Constant.LOG_QUERY_FAIL);
return mapping.findForward("return_error");
}
比如:public List test(String sqlcond,int curpge,int unitpage){
String sql=""}
呵呵如果是刚开始学的话,那就放在上面
public List getUsers(int pageSize, int startRow) throws HibernateException {
final int pageSize1 = pageSize;
final int startRow1 = startRow;
return this.getHibernateTemplate().executeFind(new HibernateCallback() {
public List doInHibernate(Session session)
throws HibernateException, SQLException {
Query query = session.createQuery("from Users");
query.setFirstResult(startRow1);
query.setMaxResults(pageSize1);
return query.list();
}
});
} public int getUserCount() {
return ((Long) getSession().createQuery("select count(*) from Users")
.list().get(0)).intValue();
}
int perPage) {
...
String sql = "select * from article where fk_blog = ? limit "
+ (account - 1) * perPage + "," + perPage;//account表示现在已经是第几条了,perPage是每页显示的数目
...
}