java-web项目的分页与联合模糊查询(不使用分页框架)

本文介绍了一个不使用分页框架的Java Web项目中,如何进行分页和联合模糊查询。通过DTO类、jsp页面、controller、service、dao层和mybatis的mapper.xml文件实现书籍后台管理系统的分页查询功能。在controller中计算最大页数,service和dao层处理查询逻辑,mapper.xml文件完成SQL查询。作者认为分页逻辑的梳理是关键,并期待更多优化建议。
摘要由CSDN通过智能技术生成

记录分页的一种实例解决方案:
项目背景:书籍后台管理系统
项目数据库:mysql
项目框架:spring、spring-mvc、mybatis
开发模式:三层架构(controller层、service层、dao层)

一、准备工作-dto类

1.接收内容的实体类-Sold.java:

```
package com.bookstore.dto;

import java.util.Date;
public class Sold {

private int userid;
private int bookid;
private String uname;
private String bname;
private int number = 1;
private Date time;
private Date beginDate;//联合查询的开始时间
private Date endDate;//联合查询的结束时间
private int startPage;//翻页时的开始内容位置
private int endPage;//翻页时的结束内容位置
private double price;
private double allprice;
private String author;
private String press;
}

```
//注:此实体类仅写出参数(其他有参无参自己脑补下就好了ー( ̄~ ̄)ξ)    

2.翻页用的实体类-Paging.java:

```
package com.bookstore.dto;

public class Paging {
    //也可以将此类参数定义为private
    public int currentPage = 1;//当前页
    public int rowsPage = 10;//每页显示数
    public int allCount;//总记录数
    public int maxPage;//总页数

    //这是一个根据前台页面传递过来的页面数计算显示内容起始位置的方法
    public void getPage(int currentPage,Sold sold){
        int start = (currentPage - 1)*rowsPage;
        sold.setStartPage(start);
        sold.setEndPage(rowsPage);
        System.out.println("起始页:"+start);
    }
}
```

二、jsp页面的主要内容
注:jsp添加了此头文件以获取当前页面地址

```
    <%
    //获取当前系统路径
    String path = request.getContextPath();
    // 获取当前协议名(默认http) 获取浏览器显示的主机名  获取服务器端口号
    String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()+ path + "/";
    %>  
```

1、联合模糊查询模块:
```
<tr>
  <td>
  <form action="<%=basePath %>manager/selectSold.action" method="post">
      <table style="font-size: 16px;">
      <tr>
          <td align=left>用户名</td>
          <td><input type="text" name="uname" value="${uname}"/></td>
      </tr>
      <tr>
          <td align=left>开始日期 </td>
          <td>
          <input type="text" name="beginDate" value="${beginDate}"/>
          </td> 
          <td align=left>结束日期 </td>
          <td>
          <input type="text" name="endDate" value="${endDate}"/></td>
          <td><input type=submit value="查询"/></td>
      </tr>
      </table>
  </form>
  </td>
</tr>
```
2.内容显示模块与翻页:
```
<table border="1" width=100%> 

       <tr>
           <td>用户名</td>
           <td>书名--购买数量(本)</td>
           <td>书单价</td>
           <td>出版社</td>
           <td>作者</td>
           <td>购买日期</td>
           <td>总付款</td>
       </tr>
        <c:forEach var="br" items="${records}">
          <tr>
            <td>${br.uname}</td>
            <td>${br.bname}--${br.number}</td>
            <td>${br.price}</td>
            <td>${br.press}</td>
            <td>${br.author}</td>
            <td>${br.time}</td>
            <td>${br.allprice}</td>
          </tr>
         </c:forEach>

        <tr>
        <td>
        <table id="tblTurnPage">   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值