JAVA基础:分页 (学习笔记)【DVD分页查看】

分页

分页一张表---创建entry类

分页多张表---创建pojo类

1,准备实体类 com.jr.entry.DVD

2,接口问题:

    (1)根据条件 --- 获得符合条件的总条数

    (2)根据条件 --- 获得符合条件的集合数据。

3,分页工具类

    (1)每页有几条数据?  ----直接设置                                       4

    (2)要知道已拥有多少条数据? ----按条件查询数据库。          20

    (3)一共能分多少页?  ----通过计算可获得   (3)=(2)/(1)

     (4)当前是第几页?  ----程序刚运行时,默认当前是第一页。

    (5)当前页显示的数据集合? (分页的终极目的)

DVD分页查看

Mysql数据库

  • DVD --- 表内容

  • DVD --- 设计表

  • entry 包 --- DVD 类

package page.entry;/*** 实体类---一对一参照表* 表名=类名(首字母大写)* 字段名===属性名* 字段类型==属性类型*/
public class DVD {private String id;private String dname;private Integer state;private String lendDate;private Integer lendCount;public DVD() {}public DVD(String id, String dname, Integer state, String lendDate, Integer lendCount) {this.id = id;this.dname = dname;this.state = state;this.lendDate = lendDate;this.lendCount = lendCount;}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getDname() {return dname;}public void setDname(String dname) {this.dname = dname;}public Integer getState() {return state;}public void setState(Integer state) {this.state = state;}public String getLendDate() {return lendDate;}public void setLendDate(String lendDate) {this.lendDate = lendDate;}public Integer getLendCount() {return lendCount;}public void setLendCount(Integer lendCount) {this.lendCount = lendCount;}@Override/*id 名称 状态 借出时间 借出次数*/public String toString() {return /*"DVD{" +"id='" + id + '\'' +", dname='" + dname + '\'' +", state=" + state +", lendDate='" + lendDate + '\'' +", lendCount=" + lendCount +'}'*/this.id + "\t" +this.dname + "\t" +(this.state == 0 ? "未借出" : "已借出") + "\t" +this.lendDate + "\t" +this.lendCount;}
}
  • util 包 --- DBHelper 类

package page.util;import java.lang.reflect.Field;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;public class DBHelper {//提取1+2,获得连接对象public Connection getcon() {Connection con = null;try {Class.forName("com.mysql.cj.jdbc.Driver");String url = "jdbc:mysql://127.0.0.1:3306/demodvd?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true";//localhost也可以写成-----127.0.0.1String username = "root";String password = "root";//密码con = DriverManager.getConnection(url, username, password);} catch (ClassNotFoundException | SQLException e) {e.printStackTrace();}return con;}//关闭连接资源(提取第7步)public void closeAll(Connection con, PreparedStatement ps, ResultSet rs) {try {if (con != null) {con.close();}if (ps != null) {ps.close();}if (rs != null) {rs.close();}} catch (SQLException e) {e.printStackTrace();}}//通用的增删改方法:1-7在这里做汇总public int update(String sql, Object... arrs) {//4-5改Connection con = getcon();//1-2PreparedStatement ps = null;int count = 0;try {ps = con.prepareStatement(sql);//4  public int update(String sql,Object...arrs){for (int i = 0; i < arrs.length; i++) {//判断有几个问ps.setObject((i + 1), arrs[i]);//给第几个?赋值}count = ps.executeUpdate();//5} catch (SQLException e) {e.printStackTrace();}closeAll(con, ps, null);//7return count;}//通用的查询方法方法----查询所有表!!!public List query(String sql, Class cla, Object... arrs) {List list = new ArrayList<>();Connection con = getcon();//1-2  获得连接对象PreparedStatement ps = null;ResultSet rs = null;try {ps = con.prepareStatement(sql);//4.获得执行对象for (int i = 0; i < arrs.length; i++) {ps.setObject((i + 1), arrs[i]);}rs = ps.executeQuery();//5.//将rs里的数据存到list集合里去 ---反射while (rs.next()) {Object obj = cla.newInstance(); //实例化对象Field[] fs = cla.getDeclaredFields();//获得属性for (Field f : fs) {//赋值f.setAccessible(true);//允许暴力访问f.set(obj, rs.getObject(f.getName()));}list.add(obj);}} catch (SQLException e) {e.printStackTrace();} catch (InstantiationException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();} finally {closeAll(con, ps, rs);}return list;}}
  • util 包 ---PageHelper 类

package page.util;import page.entry.DVD;import java.util.ArrayList;public class PageHelper {/*** 每页有多少条数据?*/private Integer showCount = 3;/*** 一共有多少条数据?*/private Integer dateCount;/*** 一共能分多少页?*/private Integer pageCount;/*** 当前是第几页? 默认当前是第1页*/private Integer indexPage = 1;/*** 当前页要显示的集合数据*/private ArrayList<DVD> list;public PageHelper() {}public PageHelper(Integer showCount, Integer dateCount, Integer pageCount, Integer indexPage, ArrayList<DVD> list) {this.showCount = showCount;this.dateCount = dateCount;this.pageCount = pageCount;this.indexPage = indexPage;this.list = list;}public Integer getShowCount() {return showCount;}public void setShowCount(Integer showCount) {this.showCount = showCount;}public Integer getDataCount() {return dateCount;}public void setDataCount(Integer dataCount) {this.dateCount = dataCount;getPageCount();//总页数}public Integer getPageCount() {//一共13条数据,每页显示4条数据:一共多少页 ----  13%4==0  ? 13/4  :  13/4....1return this.dateCount % this.showCount == 0 ?this.pageCount / this.showCount :this.dateCount / this.showCount + 1;}/* public void setPageCount(Integer pageCount) {this.pageCount = pageCount;}*/public Integer getIndexPage() {return indexPage;}public void setIndexPage(Integer indexPage) {this.indexPage = indexPage;}public ArrayList<DVD> getList() {return list;}public void setList(ArrayList<DVD> list) {this.list = list;}
}
  • dao 包 --- DVDDao 接口

package page.dao;import page.entry.DVD;
import page.util.PageHelper;import java.util.ArrayList;public interface DvdDao {/*** 根据条件查询总条数** @param dvd* @return*/int selestCountByDvd(DVD dvd);/*** 根据条件查询所有数据** @param dvd* @return*/ArrayList<DVD> selectByDvd(DVD dvd, PageHelper ph);
}
  • dao 包 --- impl 包 --- DVDDaoImpl 类

package page.dao.impl;import page.dao.DvdDao;
import page.entry.DVD;
import page.util.DBHelper;
import page.util.PageHelper;import java.util.ArrayList;public class DvdDaoImmpl implements DvdDao {private DBHelper db = new DBHelper();@Overridepublic int selestCountByDvd(DVD dvd) {ArrayList args = new ArrayList<>();StringBuilder sql = new StringBuilder("select * from dvd where 1=1 ");if (dvd.getId() != null) {sql.append("and id=?");args.add(dvd.getId());}if (dvd.getDname() != null) {sql.append("and dname=?");args.add(dvd.getDname());}if (dvd.getState() != null) {sql.append("and state=?");args.add(dvd.getState());}if (dvd.getLendCount() != null) {sql.append("and lendCount=?");args.add(dvd.getLendCount());}if (dvd.getLendDate() != null) {sql.append("and lendDate=?");args.add(dvd.getLendDate());}return db.query(sql.toString(), DVD.class, args.toArray()).size();}@Overridepublic ArrayList<DVD> selectByDvd(DVD dvd, PageHelper ph) {ArrayList args = new ArrayList<>();StringBuilder sql = new StringBuilder("select * from dvd where 1=1 ");if (dvd.getId() != null) {sql.append("and id=?");args.add(dvd.getId());}if (dvd.getDname() != null) {sql.append("and dname=?");args.add(dvd.getDname());}if (dvd.getState() != null) {sql.append("and state=?");args.add(dvd.getState());}if (dvd.getLendCount() != null) {sql.append("and lendCount=?");args.add(dvd.getLendCount());}if (dvd.getLendDate() != null) {sql.append("and lendDate=?");args.add(dvd.getLendDate());}sql.append("limit ?,?");//(index-1)*shoeCountargs.add((ph.getIndexPage() - 1) * ph.getShowCount());args.add(ph.getShowCount());return (ArrayList<DVD>) db.query(sql.toString(), DVD.class, args.toArray());}}
  • service 包 --- DVDService 接口

package page.service;import page.entry.DVD;
import page.util.PageHelper;import java.util.ArrayList;public interface DvdService {int getDateCount(DVD dvd);ArrayList<DVD> getindexPageList(DVD dvd, PageHelper ph);
}
  • service 包 --- impl 包 --- DVDServiceImpl 类

package page.service.impl;import page.dao.DvdDao;
import page.dao.impl.DvdDaoImmpl;
import page.entry.DVD;
import page.service.DvdService;
import page.util.PageHelper;import java.util.ArrayList;public class DvdServiceImpl implements DvdService {private DvdDao dvdDao = new DvdDaoImmpl();@Overridepublic int getDateCount(DVD dvd) {return dvdDao.selestCountByDvd(dvd);}@Overridepublic ArrayList<DVD> getindexPageList(DVD dvd, PageHelper ph) {return dvdDao.selectByDvd(dvd, ph);}
}
  • controller 包 --- DVDController 类

package page.controller;import page.entry.DVD;
import page.service.DvdService;
import page.service.impl.DvdServiceImpl;
import page.util.PageHelper;import java.util.List;
import java.util.Scanner;public class DvdController {private DvdService dvdService = new DvdServiceImpl();private Scanner input = new Scanner(System.in);PageHelper ph = new PageHelper();DVD dvd = new DVD();Integer i = null;public void menu() {System.out.println("请输入你要查询的id:");String id = input.next();dvd.setId(id);while (true) {ph.setDataCount(dvdService.getDateCount(dvd));if (i != null) {ph.setIndexPage(i);if (i < 1 || i > ph.getPageCount()) {System.out.println("输入页码不对,程序退出");return;}}ph.setList(dvdService.getindexPageList(dvd, ph));System.out.println("一共有" + ph.getPageCount() + "页");System.out.println("当前是第:" + ph.getIndexPage() + "页");System.out.println("id\t\t\t名称\t状态\t借出时间\t借出次数");for (DVD d : ph.getList()) {System.out.println(d);}System.out.println("请输入你要查看的页面数(1-" + ph.getPageCount() + "):");i = input.nextInt();}}public void menuBy() {System.out.println("请输入你要查询的id:");String id = input.next();dvd.setId(id);while (true) {ph.setDataCount(dvdService.getDateCount(dvd));if (i != null) {ph.setIndexPage(i);if (i < 1 || i > ph.getPageCount()) {System.out.println("输入页码不对,程序退出");return;}}ph.setList(dvdService.getindexPageList(dvd, ph));System.out.println("一共有" + ph.getPageCount() + "页");System.out.println("当前是第:" + ph.getIndexPage() + "页");System.out.println("id\t\t\t名称\t状态\t借出时间\t借出次数");for (DVD d : ph.getList()) {System.out.println(d);}System.out.println("请输入你要查看的页面数(1-" + ph.getPageCount() + "):");i = input.nextInt();}}
}
  • test 包 --- TestMain 类

package page.test;import page.controller.DvdController;public class TestMain {public static void main(String[] args) {DvdController controller = new DvdController();controller.menu();}
}
  • 结果展示

条件查询

全查

将上面的DVDController类中的这三行代码注掉,就是全查的方法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/5456.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

macOS开发环境配置与应用开发(详细讲解)

&#x1f4dd;个人主页&#x1f339;&#xff1a;一ge科研小菜鸡-CSDN博客 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; 1. 引言 macOS作为Apple公司推出的桌面操作系统&#xff0c;以其稳定性、优雅的用户界面和强大的开发工具吸引了大量开发者。对于…

Qt桌面应用开发 第二天(信号和槽 Lambda表达式)

目录 1.信号和槽 1.1信号 1.2信号和槽重载问题 1.3 注意事项 1.4信号和槽Lambda表达式 1.信号和槽 信号的发送者——信号——信号的接受者——信号的处理&#xff08;槽函数&#xff09; connect(信号的发送者&#xff0c;发送的信号&#xff0c;信号的接受者&#xff0…

ubuntu 22.04 server 安装 anaconda3

ubuntu 22.04 server 安装 anaconda3 https://www.anaconda.com/download/success Anaconda Installers wget https://repo.anaconda.com/archive/Anaconda3-2024.10-1-Linux-x86_64.sh 其他的是 默认 Executing transaction: done installation finished. Do you wish to…

如何设置VSCODE快捷键光标移到行首和行尾

{ "key": "cmdhome", "command": "cursorTop", },{ "key": "cmdend", "command": "cursorBottom", }

台新金控在台北金融科技展上展示自研GenAI应用与LLM

在今年的台北金融科技展上&#xff0c;多家金融机构展示了他们的生成式人工智能&#xff08;GenAI&#xff09;应用。其中&#xff0c;台新金控也展示了包括升级后的智能客服、面向企业金融客户的拟真客服人员、影片生成服务以及音乐生成服务等应用。 然而&#xff0c;台新的亮…

项目开发流程规范文档

项目开发流程规范文档 目标: 明确项目组中需求管理人员, 交互设计, 美工以及开发之间的工作输入输出产物. 明确各岗位职责. 以免造成开发, 产品经理以及项目经理之间理解不到位, 沟通成本过高,返工造成资源浪费. 所有环节产生的文档都可以作为项目交付的资源. 而不是事后再补文…

Go API 多种响应的规范化处理和简化策略

一个对外提供API接口的服务&#xff0c;在真正动工开发接口前一般需要先确定一下接口响应的通用格式&#xff0c;无论接口响应里返不返回业务数据&#xff0c;返回的数据是字符串、列表、对象还是其他类型都会遵照这个通用的响应格式。 既然一个项目接口的响应格式是确定的&…

poi excel数据统计导出

##poi excel导出案例 1.ajxa导出请求没有任何反应&#xff0c;打断点看了workBook中也有数据&#xff0c;网上查阅说ajax请求导出无法接收流&#xff0c;换成location.href,果然可以了 2.控制器代码 response.setCharacterEncoding("UTF-8");response.setContentTyp…

基于Python的影院电影购票系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

SQL Server 多数据源配置

目录 1、添加依赖 2. 配置数据源 3. 创建数据源配置类 4. 创建Mapper接口和XML映射文件 5. 使用Mapper 6.启动类配置 7.项目结构目录 1、添加依赖 首先&#xff0c;在pom.xml文件中添加SQL Server的JDBC驱动&#xff1a; <!-- SQL Server Connector --> <dep…

FlinkSql读取外部Mysql和HBase数据库的方法(scala)

我的Flink版本为1.13.6 <flink.version>1.13.6</flink.version> FlinkSql读取外部的MySQL是走的JDBC所以需要以下两个依赖&#xff1a; <dependency><groupId>org.apache.flink</groupId><artifactId>flink-connector-jdbc_${scala.bina…

使用Rust实现http/https正向代理

相关库的安装 利用vcpkg安装openssl库 vcpkg install openssl:x64-windows并设置openssl库位置的环境变量 $Env:OPENSSL_DIR"D:/vcpkg/packages/openssl_x64-windows/"安装openssl软件&#xff0c;因为需要利用openssl生成自签名证书 Cargo依赖 [dependencies] …

vue3如何使用pinia设置全局状态,附常见面试题

1. stores/index.ts 文件 在 index.ts 中创建 store 实例并封装了注册逻辑&#xff0c;这样可以方便地将整个 Pinia 实例注册到 Vue 应用中。代码如下&#xff1a; import type { App } from vue import { createPinia } from piniaconst store createPinia()// 全局注册 st…

【微知】Nvida Mellanox网卡中速率SDR、DDR、QDR、FDR、EDR、HDR、NDR全称与速率?

文章目录 综述背景全称早期速率&#xff1a;中期当前 其他 综述 Single Data Rate (SDR) 10Gbps Double Data Rate (DDR) 20Gbps Quad Data Rate (QDR) 40Gbps Fourteen Data Rate (FDR) 56Gbps Enhanced Data Rate (EDR) 100Gbps High Data Rate (HDR) 200Gbps Next Data Rat…

融合虚拟化与容器技术,打造灵活又安全的AI算力服务

随着人工智能技术的不断进步&#xff0c;AI企业在迅速推进大模型业务时&#xff0c;往往会倾向于采用容器化的轻量部署方案。相较于传统的虚拟机部署&#xff0c;容器化在快速部署、资源利用、环境一致性和自动化编排等方面具备显著优势。 然而&#xff0c;容器技术所固有的隔…

Hunyuan-Large:推动AI技术进步的下一代语言模型

腾讯近期推出了基于Transformer架构的混合专家&#xff08;MoE&#xff09;模型——Hunyuan-Large&#xff08;Hunyuan-MoE-A52B&#xff09;。该模型目前是业界开源的最大MoE模型之一&#xff0c;拥有3890亿总参数和520亿激活参数&#xff0c;展示了极强的计算能力和资源优化优…

岛屿数量 广搜版BFS C#

和之前的卡码网深搜版是一道题 力扣第200题 99. 岛屿数量 题目描述 给定一个由 1&#xff08;陆地&#xff09;和 0&#xff08;水&#xff09;组成的矩阵&#xff0c;你需要计算岛屿的数量。岛屿由水平方向或垂直方向上相邻的陆地连接而成&#xff0c;并且四周都是水域。…

本地使用conda创建django虚拟环境

1、首先本地安装好conda。 2、创建django的虚拟环境 conda create -n django # 这里的 django只是虚拟的名称&#xff0c;自己随便名字就行&#xff0c;只要你自己知道这个是django的虚拟环境就行。 3、安装成功&#xff0c;查看虚拟环境 conda env list 4、激活虚拟环境…

rabbitMQ

官网&#xff1a;https://www.rabbitmq.com/ 一 介绍与安装 1 安装 我们同样基于Docker来安装RabbitMQ&#xff0c;使用下面的命令即可&#xff1a; docker run \-e RABBITMQ_DEFAULT_USERitheima \-e RABBITMQ_DEFAULT_PASS123321 \-v mq-plugins:/plugins \--name rabbi…

reg注册表研究与物理Hack

reg注册表研究与物理Hack 声明&#xff1a;内容的只是方便各位师傅学习知识&#xff0c;以下网站只涉及学习内容&#xff0c;其他的都与本人无关&#xff0c;切莫逾越法律红线&#xff0c;否则后果自负。 目录 reg注册表研究与物理HackWindows注册表修改注册表实现应用程序开机…