带条件的分页查询

jsp页面,用户输入条件查询得结果后,

当点击
首页,上一页,下一页,末页
这些翻页的时候,如何把当前的查询条件也捎上?

作者: zqz54811126   发布时间: 2011-06-16

当前的查询条件带上?这个有点困难,如果你使用的struts2,直接使用<s:Url> 这个url中就把当前参数全部带上了的。
否则,这需要你手动地拼接当前界面的所有参数。如通过request.getRequestURL取得地址,通过request.getQueryString取得参数信息,再拼接这个字符串。

最后,使用get 方法 提交表单,这样参数就能传递到url上了。

作者: Fly_m   发布时间: 2011-06-16

底层的sql语句是一样的,只是传的参数不同。

下面的是最底层的查询类了。只贴这个,不知能不能帮到你。
/**
* 分页查询数据库

* @param pageNum
* 当前页数
* @param pageSize
* 每页的记录数大小
* @return list 返回当前页数的记录列表
*/
public static List<Student> getStuListLike(int pageNum, int pageSize,
String studentNum) {

if (studentNum == null) {
studentNum = "";
}
List<Student> list = new ArrayList<Student>();
String sql;
if (pageNum == 1) {
sql = "select top " + pageSize
+ " * from Student where studentNum like '%" + studentNum.replaceAll("'", "''")
+ "%'";
} else {
sql = "select top " + pageSize
+ " * from Student where studentNum like '%" + studentNum.replaceAll("'", "''")
+ "%' and studentNum not in( " + "select top "
+ (pageNum - 1) * pageSize + " studentNum from Student )";
}
ResultSet rs = ConnectionDAO.executeQuery(sql);
try {
while (rs.next()) {
Student s = new Student();
s.setIdentityCard(rs.getString("identityCard"));
s.setSex(rs.getString("sex"));
s.setStudentName(rs.getString("studentName"));
s.setStudentNum(rs.getString("studentNum"));
list.add(s);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ConnectionDAO.freeConn();
return list;

}

作者: Failure_Lee   发布时间: 2011-06-16

使用隐藏域来传递查询条件:
<form id="..." name="..." action="..." method="post">
  <input type="hidden" name="..." value="..."/>
  <input type="hidden" name="page" value="..."/>
  ...
</form>
同时,向“上一页”、“下一页”所代表的超链接注册onclick事件,点击后向隐藏域设置
合适的参数,之后提交表单。
不知这样能不能满足你的要求。

作者: codolio   发布时间: 2011-06-16

一样的 在SQL语句后面and一个或多个查询条件 根据你的需求

作者: javaxiaochouyu   发布时间: 2011-06-16

用隐藏域或是用hibernate内的那个分页也不错,封装在一个叫什么来着的里面

作者: xinxian13   发布时间: 2011-06-16

例如:

SQL code

select top 3 * from orderDetail  where orderId = '20110613214031' and detaileId not in ( select  top 3 detaileId from orderDetail where orderId = '20110613214031'  ) 


作者: javaxiaochouyu   发布时间: 2011-06-16

没错 想到得只有是隐藏域啦 试试看

作者: xflr123   发布时间: 2011-06-16

用隐藏字段把你的当前页传到后台,分页查询sql语句一般不用改变,所以直接写代码或配置文件里好了,后台取到前台传来的查询字段和页码,拼装sql就行了,为啥要传sql语句?

作者: mumushijie   发布时间: 2011-06-16

如果你的是管理系统,可以把条件放入到session中,另外的话你可以把提交有查询条件的表单。

作者: gqf19891018   发布时间: 2011-06-16

你可以在连接中加上参数,然后在后台读取,在拼装成SQL语句就行了

作者: jackieban   发布时间: 2011-06-16