subjectinfo{subId,teaId,stuId,subName}题目表
teachers{teaId,stuName}教师表
students{stuId,stuName}学生表
现在想在页面显示所有学生信息的一个表格,没有选题的学生题目格子为未选,选了就显示题目名称,标题为:学生姓名  学号   所选题目  操作
使用分页,应该这样求出这个表格结果?
==============================================================================
action
@Override
public String execute() throws Exception {
StudentsPageUtil page = new StudentsPageUtil();
String hql="from Students";
list = page .QueryList(hql);
this.t_totalpage=page.totalPage;
this.currentpage=page.currentPage;
return SUCCESS ;
}
      private List list;
private int t_totalpage;  
==============================================================================
分页
/*
 * 功 能:获取总记录数 参 数:持久化对象名 返回值:int
 */
public int getUserTotalCount(String tablename) {
SubjectInfoPageUtil page = new SubjectInfoPageUtil();

Query q = s.createQuery("select count(*) from  " + tablename );
List ll = q.list();
Integer a = (Integer) ll.get(0);
return a.intValue();
}
/*
 * 功 能:获取总页数 参 数:pageSize(每页显示数据量) 返回值:int
 */
public int getTotalPage(int pageSize) {
totalCount = getUserTotalCount("Students");
totalPage = ((totalCount + pageSize) - 1) / pageSize;
return totalPage;
} /*
 * 功 能:分页显示数据 参 数:hql , pageNum-第几页 , pageSize-每页条数 返回值:List
 */
public List QueryList(String hql){
pageSize = 9;
HttpServletRequest request = ServletActionContext.getRequest();
String pageString = request.getParameter("page");
if (pageString == null || pageString.length() == 0) {
pageString = "1";
}
currentPage = 0;
try {
currentPage = Integer.parseInt(pageString);
} catch (Exception e) {
e.printStackTrace();
}
if (currentPage == 0) {
currentPage = 1;
}
totalPage = getTotalPage(pageSize);
totalCount = getTotalCount();
currentPage = currentPage;
list = this.pagination(hql, currentPage, pageSize);
return list;
}
=================================================================================

解决方案 »

  1.   

    hibernate不是这样分页的啊
    网上列子很多哦LZ您看看
    http://www.it.com.cn/f/edu/053/27/93817.htm
    Hibernate 可以实现分页查询,例如: 
      从第2万条开始取出100条记录   Query q = session.createQuery("from Cat as c"); 
      q.setFirstResult(20000); 
      q.setMaxResults(100); 
      List l = q.list();
      

  2.   

    问题还没问完,现在问第二个,
    subjectinfo{subId,teaId,stuId,subName}题目表 
    teachers{teaId,stuName}教师表 
    students{stuId,stuName}学生表 
    现在想在页面显示所有教师信息的一个表格,标题为:教师名称  教师出题总数  已选题学生总数 未选题学生数  操作也是那样分页,请问我该怎么球的值?然后在页面怎么去结果显示出来呢?希望大家指教!
      

  3.   

    String hql="from Students";
    list = page .QueryList(hql);                 
    int num = list.size();// 总记录
    int pagecount = 1;// 页码
    int count=10;//每页显示的条数
    if (num % count == 0) {
    pagecount = num / count;
    } else {
    pagecount = num / count + 1;
    }
      

  4.   


    public int getUserTotalCount(String tablename) { 
    SubjectInfoPageUtil page = new SubjectInfoPageUtil(); Query q = s.createQuery("select count(*) from  " + tablename ); 
    List ll = q.list(); 
    Integer a = (Integer) ll.get(0); 
    return a.intValue(); 
    } 楼主这个地方有一个专门的方法:uniqueResult();顾名思义就是获取一个唯一的结果。适用于查询结果唯一的情况
      

  5.   

    就么简单hql = "select count(stu) from Students stu";查询以后就可以得到一个数字值
      

  6.   

    问题还没问完,现在问第二个, 
    subjectinfo{subId,teaId,stuId,subName}题目表 
    teachers{teaId,stuName}教师表 
    students{stuId,stuName}学生表 
    现在想在页面显示所有教师信息的一个表格,标题为:教师名称  教师出题总数  已选题学生总数 未选题学生数  操作也是那样分页,请问我该怎么球的值?然后在页面怎么去结果显示出来呢?希望大家指教!但是我在分页的时候怎么取得每个教师所出题目的总数?[color=#FF9900]教师名  题目总数  已选  未选[/color] 
    可以用 <td "><s:property value="%{subjectinfos.teaName }"/> </td> 得到老师名称
          <td "><s:property value="%{subjectinfos.teaName }"/> </td> 这个总数就不知道怎么取了。哪位能帮个忙???
      

  7.   

    不对,是这样:
    但是我在分页的时候怎么取得每个教师所出题目的总数?教师名  题目总数  已选  未选 
    可以用 <td "> <s:property value="%{teachers.teaName }"/> </td> // 得到老师名称 因为分页的时候求了subjectinfo,所有直接使用teachers.teaName取值
          <td "> <s:property value="%{subjectinfos.teaName }"/> </td> 这个总数就不知道怎么取了。哪位能帮个忙???
      

  8.   

    直接写一个完整的SQL查询语句就可以了把
      

  9.   

    hql = "select count(stu) from Students stu"; 通用的吧。