JavaWeb 带条件的分页查询

最终效果图

注意:没有带条件的时候 默认的是第一页数据

条件是组合的  sql->sql的动态变换

注意第二次查询的时候回显问题 就是填完条件后显示完当页数据ok 但是我点击第二页的时候条件还存在着

此时ListSerevlet不仅要拿到页码 页容量 还要拿到三个条件参数

封装一下条件  使得它称为一个条件类

然后把参数封装成一个条件对象

换一下email

去空格 .trim()

获取数据完毕

%在servlet里拼接的话,那么Dao里写的非空判断就一定是不为空的  -> %是字符串

作业:扩展:动态排序  orderBy(在条件类中加一个排序列 和排序方式)

前端往实体类传值,传完之后在dao写判断,也是拼接sql

但是此时?的个数我们是不知道的,怎么给(pageIndex - 1)*page.size()赋值呢

最好有两个,最多有6个

数组要长度 -> 所以我们用list ArrayList也是有序的

如果?有了我就往paramList里面添加参数

使得?的顺序是和我们参数的顺序是一致的

这个参数呢?

//把list转换为一个数组 toArray();

count()函数里加之前的if判断

if代码重复  封装 -> 拼接sql方法

为什么不返回呢?l(userCondition3sql, paramList);都是引用数据类型,类类

型数据,他们拼接修改之后指向了堆里面的同一块空间,所以不需用返回。

前端处理

 换一下:

或者

那为什么点击第二页会报错空指针异常呢?

因为前端传的name address等等数据都是空的,null调方法肯定啦

回显:点击刷新完之后,之前填写的数据依然在表单在存在!!!

都加上

我们是转发进行的的跳转  我们可以把条件对象保存到request域

有个问题:选择完条件之后,第二页没有带条件过去  导致点击第二页查询时不是查询结果所要的,只有第一页才显示满足条件的数据

我点击第二页应该是把表单进行提交  把之前的查询结果一起带到第二页

加上trim()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaWeb 分页查询一般涉及到以下几个步骤: 1. 获取查询总记录数。可以通过 SQL 语句查询数据库中满足条件的总记录数。 2. 计算总页数。根据每页显示的记录数和总记录数,计算出总页数。 3. 获取当前页记录。通过 SQL 语句查询当前页的数据记录。 4. 将查询结果封装成分页对象并返回。可以使用一个 JavaBean 将查询结果封装成分页对象并返回,该对象包含当前页码、总页数、总记录数、当前页记录等信息。 下面是一个简单的实现示例: ```java public class PageBean<T> { private int currentPage; // 当前页码 private int totalPage; // 总页数 private int pageSize; // 每页显示的记录数 private int totalCount; // 总记录数 private List<T> list; // 当前页记录列表 // 省略 get/set 方法 public PageBean(int currentPage, int pageSize) { this.currentPage = currentPage; this.pageSize = pageSize; // 计算总记录数和总页数 int[] arr = getStartAndEnd(currentPage, pageSize); int start = arr[0]; int end = arr[1]; String sqlCount = "select count(*) from table_name"; String sqlData = "select * from table_name limit " + start + "," + pageSize; // 查询总记录数 ResultSet rsCount = stmt.executeQuery(sqlCount); if (rsCount.next()) { totalCount = rsCount.getInt(1); } // 查询当前页记录列表 ResultSet rsData = stmt.executeQuery(sqlData); while (rsData.next()) { // 将查询结果封装成实体对象,再添加到 list 中 T entity = createEntity(rsData); list.add(entity); } // 计算总页数 totalPage = (totalCount + pageSize - 1) / pageSize; } private int[] getStartAndEnd(int currentPage, int pageSize) { int start = (currentPage - 1) * pageSize; int end = start + pageSize; return new int[] { start, end }; } } ``` 在使用时,可以通过传入当前页码和每页显示的记录数来初始化 PageBean 对象: ```java PageBean<User> pageBean = new PageBean<>(currentPage, pageSize); ``` 其中,createEntity() 方法需要根据具体的实体对象进行实现。另外,需要注意 SQL 语句中的表名和字段名需要根据实际情况进行修改。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值