分页/列表分页

devtools/2024/11/27 7:43:05/

分页和单列表差不多,只是多加了点数据

一 : 实体类 

               1. 原生实体类 和  2.vo实体类

                vo实体类包含原生实体类的所有字段 再+新字段

                原生(数据库里的字段)

                vo(多条件查询字段  ,分页字段)

                        分页字段 : private Integer pageNum=1  //起始页

                                          private Integer pageSize =4  //显示页数

二 . jsp页面

                        1.所搜文本框
                        2.搜索按钮
                        3.列表 (table,tr,td)
                        4.文档就绪函数(想让用户一进来就看到的东西)

                              (文档就绪函数 : ) $( function() {

                                    ①取值  ②组装对象 ③调用ajax

                                     ①:获取所搜框的文本框的值

                                     ②组装对象(获取到的所搜文本框的值)

                                     ③调用ajax

                                 })

javascript">$(function () {//取值   ajaxlet carName = $("#carName").val()let begin = $("#begin").val()let end = $("#end").val()//组装对象let obj={carName,begin,end}//调用ajaxgetCarList(obj)})

                                在文档就绪函数的外面写封装ajax的方法

                                     定义 : functionXXX(obj){

                                                1.url : 请求路径

                                                2.type: 请求方法

                                                3.data: 数据传递

                                                3.dataType: 解析

                                                成功回调函数

                                                        success(res){

                                                                1.打印

                                                                2.清空数据

                                                                3.追加表头

                                                                4.使用循环 ,追加表数据

                                                                5.循环外追加分页按钮

                                                }

                                        }

javascript">//封装ajaxfunction getCarList(obj) {$.ajax({url:"/car/CarList", //请求路径type:"post", //请求方法data:{reqInfos:JSON.stringify(obj)}, //数据传递dataType:"json", //解析success(res){console.log(res) //打印//取值  nextPagelet arr=res.datalet prevPage = res.prevPage  //上一页let nextPage = res.nextPage  //下一页let totalPage = res.totalPage //尾页//清空表$("#table").empty()//追加表头$("#table").append(`<tr><td>汽车ID</td><td>汽车编号</td><td>汽车名称</td><td>汽车价格</td><td>生产日期</td><td>上传图片</td><td>汽车类型</td><td>汽车类型名称</td><td>汽车产地</td><td>汽车产地名称</td><td>操作</td></tr>`)//循环数组for (let x of arr) {//追加表数据$("#table").append(`<tr><td>\${x.carId}</td><td>\${x.carCode}</td><td>\${x.carName}</td><td>\${x.carPrice}</td><td>\${x.carTime}</td><td>\${x.imgUrl}</td><td>\${x.typeId}</td><td>\${x.typeName}</td><td>\${x.supplierId}</td><td>\${x.supplierName}</td><td>操作</td></tr>`)}//循环外追加分页按钮$("#table").append(`<tr><td colspan="100"><input type="button" value="首页" onclick="doPage(1)"><input type="button" value="上一页" onclick="doPage(\${prevPage})"><input type="button" value="下一页" onclick="doPage(\${nextPage})"><input type="button" value="尾页" onclick="doPage(\${totalPage})"></td></tr>`)},error(){alert("列表出不来了")}})}
                              5.在body下面写脚本

                                        ①.给所搜框绑定点击事件

                                                1.取值  2.组装对象 3.调用ajax

                                        ②.给分页的按钮写js点击事件

                                                 1.取值 

                                                 2.组装对象 多 + 一个 pageNum

                                                3.调用ajax

javascript">//给添加的按钮绑定一个点击事件$("#seek").click(function () {//取值   ajaxlet carName = $("#carName").val()let begin = $("#begin").val()let end = $("#end").val()//组装对象let obj={carName,begin,end}//调用ajaxgetCarList(obj)})

 二 . Controller

                        1.接参 2.将json对象还原成Java对象 3.转换后的对象传给service 4.响应给用户

                        2.将json对象还原成Java对象 (参数放vo实体类)

                        3.传给service 返回值用: PageResult<vo实体类>

javascript">//给分页绑定一个方法  复制所搜框的 多加一个 pageNumfunction doPage(pageNum) {//取值   ajaxlet carName = $("#carName").val()let begin = $("#begin").val()let end = $("#end").val()//组装对象let obj={carName,begin,end,pageNum}//调用ajaxgetCarList(obj)}

三 . service

                        1.调用dao层方法获取所有数据

                                使用list 获取所有值

                        2.调用dao层方法获取总条数

                                举例 :  int count = carDao.count(vo实体类)

                        3.调用分页工具类

                                   new PageResult 

                                  (光标放到这个单词上 鼠标左键点击这个工具类中 把4个参数赋值出来)

                        4.直接返回 得到的返回值
javascript">@WebServlet("/car/*")
public class CarController extends BaseController{//创建全局变量CarServiceImpl service = new CarServiceImpl();//列表protected void CarList(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//接参   将json对象转换成Java对象String reqInfos = req.getParameter("reqInfos");//将json对象转换成Java对象CarVo carVo = JSONObject.parseObject(reqInfos, CarVo.class);//将转换后的对象传给service  使用返回值 : PageResultPageResult<CarVo> list= service.CarList(carVo);//将处理后的结果响应给用户resp.getWriter().println(JSONObject.toJSONString(list));}
}

四 . dao

                        1.分页查询数据的方法

                                ①定义sql (联查的sql语句)

                                ②打印sql语句

                                ③分页sql语句

                                        sql+=" limit  ?,? ";

                                ④分页公式

                                        int index =(起始页数-1)*条数

                                ⑤执行sql语句

javascript">public class CarDaoImpl extends BaseDao implements CarDao {//查询数据的方法@Overridepublic List<CarVo> CarList(CarVo carVo) {//定义sqlString sql="SELECT\n" +"  a.*,\n" +"  type_name,\n" +"  supplier_name\n" +"FROM\n" +"  t_car a\n" +"  LEFT JOIN t_car_type b ON a.type_id = b.type_id\n" +"  LEFT JOIN t_car_supplier c ON a.supplier_id = c.supplier_id WHERE car_del=0";//对名字进行模糊查找if (null!=carVo.getCarName() && !carVo.getCarName().isEmpty()){sql+=" and car_name like '%"+carVo.getCarName()+"%' ";}//对时间进行区间查找if (null!=carVo.getBegin() && !carVo.getBegin().isEmpty()){sql+=" and car_time >= '"+carVo.getBegin()+"' ";}if (null!=carVo.getEnd() && !carVo.getEnd().isEmpty()){sql+=" and car_time <= '"+carVo.getEnd()+"' ";}//打印sql语句System.out.println(sql);//分页sql语句sql+=" LIMIT ?,?";//分页取值公式int index = (carVo.getPageNum() - 1) * carVo.getPageSize();//执行sql语句return baseQueryList(CarVo.class,sql,index,carVo.getPageSize());}
}
                        2.分页方法

                                ① :复制分页查询数据的方法

                                ② : 删掉sql语句

                                       1.获取总条数sql语句

                                                select count (1) from 表名 where del=0

                                ③ : 打印sql

                                ④ : 利用反射 baQueryCount 用long

                                ⑤ : 返回 : 手动转换成int类型

javascript">//分页方法@Overridepublic int count(CarVo carVo) {//获取总条数的sql语句String sql="SELECT count(1) FROM t_car where car_del=0";//对名字进行模糊查找if (null!=carVo.getCarName() && !carVo.getCarName().isEmpty()){sql+=" and car_name like '%"+carVo.getCarName()+"%' ";}//对时间进行区间查找if (null!=carVo.getBegin() && !carVo.getBegin().isEmpty()){sql+=" and car_time >= '"+carVo.getBegin()+"' ";}if (null!=carVo.getEnd() && !carVo.getEnd().isEmpty()){sql+=" and car_time <= '"+carVo.getEnd()+"' ";}//打印sql语句System.out.println(sql);//利用反射 反射只能用longLong count = baseQueryCount(Long.class, sql);//手动转换int类型return count.intValue();}

                                                


http://www.ppmy.cn/devtools/137338.html

相关文章

小程序-基于java+SpringBoot+Vue的网上花店微信小程序设计与实现

项目运行 1.运行环境&#xff1a;最好是java jdk 1.8&#xff0c;我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境&#xff1a;IDEA&#xff0c;Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境&#xff1a;Tomcat 7.x,8.x,9.x版本均可 4.硬件环境&#xff1a…

Java【多线程】(1)进程与线程

目录 1.前言 2.正文 2.1什么是进程 2.2PCB&#xff08;进程控制块&#xff09; 2.2.1进程id 2.2.2内存指针 2.2.3文件描述符表 2.2.4进程状态 2.2.4.1就绪状态 2.2.4.2阻塞状态 2.2.5进程优先级 2.2.6进程上下文 2.2.7进程的记账信息 2.3CPU操作进程的方法 2.4什…

鸿蒙学习自由流转与分布式运行环境-价值与架构定义(1)

文章目录 价值与架构定义1、价值2、架构定义 随着个人设备数量越来越多&#xff0c;跨多个设备间的交互将成为常态。基于传统 OS 开发跨设备交互的应用程序时&#xff0c;需要解决设备发现、设备认证、设备连接、数据同步等技术难题&#xff0c;不但开发成本高&#xff0c;还存…

C++设计模式之组合模式中适用缓存机制提高遍历与查找速度

在组合设计模式中&#xff0c;为了提高反复遍历和查找的速度&#xff0c;可以引入缓存机制。缓存机制可以通过存储已经遍历过的子组件或计算过的结果来减少重复操作的开销。以下是一个示例&#xff0c;展示了如何在组合模式中使用缓存机制来提高性能。 示例&#xff1a;组合设…

云原生世界的多面体:K8s、容器云、裸金属与云原生的深度解析

目录 引言Kubernetes&#xff08;K8s&#xff09; K8s 的定义与架构K8s 的优势与局限 容器云 容器云的定义与核心功能容器云与 Kubernetes 的关系 裸金属 裸金属的定义与应用场景裸金属与虚拟化的比较 云原生 云原生的核心理念云原生与 K8s、容器云、裸金属的关系 技术对比与应…

通过指令导入/导出vscode扩展插件

导出扩展&#xff1a; 打开VSCode终端&#xff1a; 在VSCode中&#xff0c;你可以通过菜单栏的“终端”选项打开终端&#xff0c;或者使用快捷键Ctrl &#xff08;反引号&#xff0c;通常在键盘左上角&#xff09;。运行导出命令&#xff1a; 在终端中&#xff0c;输入以下命…

MyBatis 操作数据库(进阶)

1. 动态 SQL 动态 SQL 是 MyBatis 的强大特性之一&#xff0c;能够完成不同条件下不同的 SQL 拼接 官方文档&#xff1a;动态 SQL_MyBatis中文网 1.1 <if> 标签 在注册用户的场景中&#xff0c;注册可能会分为两种字段&#xff1a;必填字段和非必填字段 如&#xff…

一个高度可扩展的 Golang ORM 库【GORM】

GORM 是一个功能强大的 Golang 对象关系映射&#xff08;ORM&#xff09;库&#xff0c;它提供了简洁的接口和全面的功能&#xff0c;帮助开发者更方便地操作数据库。 1. 完整的 ORM 功能 • 支持常见的关系模型&#xff1a; • Has One&#xff08;一对一&#xff09; • …