jdbc分页

一、最低级分页

resources下的db.properties

db.driver=com.mysql.cj.jdbc.Driver
db.url=jdbc:mysql://localhost:3305/db
db.user=root
db.password=
db.pageSize=3

Demo2.java

package cn.zcx;

import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;

/**
 * description:
 * author:zcx
 * lenovo
 * 时间:2022.03.04.19.52
 */
public class Demo2 {
    DbUtil du = new DbUtil();
    //获取查询数量
    public int m1(String sql){
        int recordcount=du.count(sql);//查询的总数
          return recordcount;
        }
        //返回一个数组存放当前总数,页数,设置每页数量
        public int[] m2(int pageSize, String sql ){
            int recordcount=m1(sql);//当前总数
            int pagecount=recordcount/ pageSize ==0? recordcount/ pageSize :recordcount/ pageSize +1;//页数
            int[] l=new int[]{recordcount,pagecount,pageSize};
            return l;
        }
}

DbUtil工具类

package cn.zcx;

import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.*;
import java.util.stream.Collectors;

/**
 * description:
 * author:zcx
 * lenovo
 * 时间:2022.03.04.14.14
 */
public class DbUtil {
    private String mysqlversion = "8.0.28";
    private String version = "1.0";
    private String dname = "db";
    private String user = "root";
    private String password = "";
    private String url = "jdbc:mysql://localhost:3306";
    private String driver = "com.mysql.cj.jdbc.Driver";
    private Connection conn = null;
    private int currPage = 1;
    private int pageSize = 10;
    private int pageCount = 0;
    private int recordCount = 0;
    private InputStream is;

    public DbUtil() {
        is = Thread.currentThread().getContextClassLoader().getResourceAsStream("db.properties");
        if (is == null) {
            try {
                Class.forName(this.driver);
                this.conn = DriverManager.getConnection(this.url, this.user, this.password);
                this.mysqlversion = this.conn.getMetaData().getDatabaseProductVersion();
            } catch (Exception e) {
                e.printStackTrace();
            }
        } else {
            init();
        }
    }
//数据库连接
    public void init() {
        Properties prop = new Properties();
        try {
            prop.load(is);
            this.driver = prop.getProperty("db.driver", "com.mysql.cj.jdbc.Driver");
            this.url = prop.getProperty("db.url", "jdbc:mysql://localhost:3305/");
            this.user = prop.getProperty("db.username", "root");
            this.password = prop.getProperty("db.password", "");
            this.pageSize = Integer.parseInt(prop.getProperty("db.pageSize", "3"));
            Class.forName(this.driver);
            this.conn = DriverManager.getConnection(this.url, this.user, this.password);
            this.mysqlversion = this.conn.getMetaData().getDatabaseProductVersion();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void connect(String host, String db, String user, String password, int port) {
        try {
            this.url = String.format("jdbc:mysql://%s:%d/%s?useUnicode=true&characterEncoding=utf8&serverTimezone=PRC", host, port, db);
            this.user = user;
            this.password = password;
            Class.forName(this.driver);
            this.conn = DriverManager.getConnection(this.url, this.user, this.password);
            this.mysqlversion = this.conn.getMetaData().getDatabaseProductVersion();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public int count(String sql, Object... params) {
        int rows = 0;
        List<map<string, object>> list = this.query(sql, params);
        Collection<object> col = list.get(0).values();
        for (Object o : col) {
            rows = Integer.parseInt(o.toString());
        }
        return rows;
    }
//&#x7ED9;&#x4E00;&#x4E2A;&#x8868;&#x540D;&#x67E5;&#x8BE2;&#x6240;&#x6709;&#x6570;&#x91CF;
    public int count(String tn) {
        int rows = 0;
        String sql = String.format("select count(0) from %s where 1=1", tn);
        try {
            PreparedStatement p = this.conn.prepareStatement(sql);
            ResultSet rs = p.executeQuery();
            if (rs.next()) {
                rows = rs.getInt(1);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return rows;
    }

    public void execute(String sql) {
        try {
            PreparedStatement p = this.conn.prepareStatement(sql);
            p.execute();
            p.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public String show(String t) {
        List<map<string, object>> list = this.query(String.format("show create table %s", t));
        return list.get(0).get("Create Table").toString();
    }

    public int save(String sql, Object... params) {
        return update(sql, params);
    }

    public int save(Map<string, object> values) {
        String t = values.get("table").toString();
        values.remove("table");
        String[] vs = new String[values.size()];
        int index = 0;
        for (String s : values.keySet()) {
            vs[index++] = String.format("%s='%s'", s, values.get(s));
        }
        String sql = String.format("insert into %s set %s", t, Arrays.stream(vs).collect(Collectors.joining(",")));
        System.out.println(sql);
        return save(sql);
    }

    public int delete(String sql, Object... params) {
        return update(sql, params);
    }

    public int update(String sql, Object... params) {
        int rows = 0;
        try {
            PreparedStatement p = this.conn.prepareStatement(sql);
            int index = 0;
            for (Object param : params) {
                p.setObject(++index, param);
            }
            rows = p.executeUpdate();
            p.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return 0;
    }
//&#x67E5;&#x8BE2;&#x5206;&#x9875;&#x6570;&#x636E;&#x653E;&#x5230;list
    public List<map<string, object>> query(String sql, Object... params) {
        List<map<string, object>> list = new ArrayList<map<string, object>>();
        try {
            PreparedStatement p = this.conn.prepareStatement(sql);
            int index = 0;
            for (Object param : params) {
                p.setObject(++index, param);
            }
            ResultSet rs = p.executeQuery();
            ResultSetMetaData rsmd = rs.getMetaData();
            while (rs.next()) {
                Map<string, object> map = new HashMap<string, object>();
                for (int i = 1; i <= rsmd.getcolumncount(); i++) { string t="rsmd.getColumnLabel(i);" map.put(t, rs.getobject(t)); } list.add(map); rs.close(); p.close(); catch (exception e) e.printstacktrace(); return list; public list<string> dbs() {
        List<string> list = new ArrayList<>();
        List<map<string, object>> ds = this.query("show databases");
        for (Map<string, object> d : ds) {
            list.add(d.get("Database").toString());
        }
        return list;
    }

    public List<string> tbs(String db) {
        List<string> list = new ArrayList<>();
        List<map<string, object>> ds = this.query(String.format("show tables from %s", db));
        for (Map<string, object> d : ds) {
            list.add(d.get(String.format("Tables_in_%s", db)).toString());
        }
        return list;
    }

    public List<string> tbs() {
        List<string> list = new ArrayList<>();
        List<map<string, object>> ds = this.query("show tables");
        for (Map<string, object> d : ds) {
            list.add(d.get(String.format("Tables_in_%s", this.dname)).toString());
        }
        return list;
    }

    public String getVersion() {
        return version;
    }

    public void setVersion(String version) {
        this.version = version;
    }

    public String getDname() {
        return dname;
    }

    public void setDname(String dname) {
        try {
            this.dname = this.conn.getCatalog();
        } catch (Exception e) {
            e.printStackTrace();
        }
        this.dname = dname;
    }

    public String getUser() {
        return user;
    }

    public void setUser(String user) {
        this.user = user;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public Connection getConn() {
        return conn;
    }

    public void setConn(Connection conn) {
        this.conn = conn;
    }

    public int getCurrPage() {
        return currPage;
    }

    public void setCurrPage(int currPage) {
        this.currPage = currPage;
    }

    public int getPageSize() {
        return pageSize;
    }

    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }

    public int getPageCount() {
        return pageCount;
    }

    public void setPageCount(int pageCount) {
        this.pageCount = pageCount;
    }

    public int getRecordCount() {
        return recordCount;
    }

    public void setRecordCount(int recordCount) {
        this.recordCount = recordCount;
    }

    public String getDriver() {
        return driver;
    }

    public void setDriver(String driver) {
        this.driver = driver;
    }

    public InputStream getIs() {
        return is;
    }

    public void setIs(InputStream is) {
        this.is = is;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public void close() {
        try {
            if (this.conn != null) {
                this.conn.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public String getMysqlversion() {
        return mysqlversion;
    }

    public void setMysqlversion(String mysqlversion) {
        this.mysqlversion = mysqlversion;
    }
}</string,></map<string,></string></string></string,></map<string,></string></string></string,></map<string,></string></=></string,></string,></map<string,></map<string,></map<string,></string,></map<string,></object></map<string,>

fy.jsp

<%@ page import="java.util.Map" %>
<%@ page import="cn.zcx.DbUtil" %>
<%@ page import="java.util.List" %><%-- 3 4 2022 created by intellij idea. user: lenovo date: time: 19:25 to change this template use file | settings templates. --%>
<%@ page contenttype="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
    <style>

        h3{
            padding: 3px;
            border-bottom: 1px dashed gray;
            text-align: center;
            width: 500px;
        }
        img{
            height: 150px;
        }
    </style>
</head>
<body>
<% 0 1 dbutil du="new" dbutil(); system.out.println(du.show("t_member")); int pagesize="du.getPageSize();" recordcount="du.count("t_member");" pagecount="recordcount" % ? : + 1; currpage="request.getParameter("p")" =="null" integer.parseint(request.getparameter("p").tostring()); if(currpage<1) if(currpage>pagecount) currpage = pagecount;
%>
<hr>
<% list<map<string, object>> list = du.query("select * from t_member order by id desc limit ?,?",currpage*pagesize-pagesize,pagesize);
    for (Map<string, object> m : list) {
        out.print("<h3>" + m.get("truename") + "</h3>");

    }
%>
<hr>
<div class="page">
    <span>&#x7B2C;<%=currpage%>&#x9875;/&#x5171;<%=pagecount%>&#x9875;&#xA0;&#x6BCF;&#x9875;<%=pagesize%>&#x6761;/&#x5171;<%=recordcount%>&#x9875;</%=recordcount%></%=pagesize%></%=pagecount%></%=currpage%></span>
    <a href="?p=1">&#x9996;&#x9875;</a> &#xA0;
    <a href="?p=<%=currpage-1%>">&#x4E0A;&#x9875;</a> &#xA0;
    <a href="?p=<%=currpage+1%>">&#x4E0B;&#x9875;</a> &#xA0;
    <a href="?p=<%=pagecount%>">&#x672B;&#x9875;</a> &#xA0;
</div>
</string,></%></%></body>
</html>
</%@></%--></%@></%@></%@>

二、百度分页

<%@ page import="cn.zcx.Demo2" %>
<%@ page import="java.util.Map" %>
<%@ page import="java.util.List" %>
<%@ page import="cn.zcx.DbUtil" %><%-- 3 4 2022 created by intellij idea. user: lenovo date: time: 20:53 to change this template use file | settings templates. --%>
<%@ page contenttype="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
  <style>

      h3{
          padding:3px;
          border-bottom: 1px dashed gray;
          width: 700px;
      }
      .page a{
          text-decoration: none;
          padding:  2px;
          margin: 2px;
          border: 1px solid gray;
      }
      .page span{
          text-decoration: none;
          padding:  2px;
          margin: 2px;
          background-color: aqua;
          border: 1px solid gray;
      }
  </style>
</head>
<body>
<% demo2 d="new" demo2(); dbutil du="new" dbutil(); int[] a="d.m2(2,"t_member");" int num="a[0];" pagesize="2;" pagecount="a[1];" currpage="request.getParameter("p")==null?" 1:integer.parseint(request.getparameter("p").tostring()); if(currpage <1)>pageCount) currpage=pageCount;
    List<map<string, object>> list = du.query("select *from t_member order by id desc limit ?,?",currpage*pageSize-pageSize,pageSize);
    for (Map<string,object> m:list) {
        out.print("<h3>"+m.get("truename")+"<h3>");
        out.print("<hr>");
    }
%>
<hr>
<div class="page">
    <% int ss="1;" ee="10;" if(currpage>5){
            ss=currpage-5;
            ee=currpage+5;
        }
        out.print("<a href="\"?p=1\"">&#x9996;&#x9875;</a>");
        if(currpage>1){
        out.print(String.format("<a href="\"?p=%d\"">&#x4E0A;&#x4E00;&#x9875;</a>",currpage-1));}
        for(int i=ss;i<=ee;i++){ if(i>pageCount){
                break;
            }
            if(i==currpage){
                out.print(String.format("<span>%d</span>",i));
                continue;
            }
            out.print(String.format("<a href="\"?p=%d\"">%<d< a>",i));
        }
        if(currpage<pagecount){ out.print(string.format("<a href="\"?p=%d\"">&#x4E0B;&#x4E00;&#x9875;</pagecount){></d<></a>",currpage+1));}
        out.print(String.format("<a href="\"?p=%d\"">&#x5C3E;&#x9875;</a>",pageCount));
    %>
</=ee;i++){></%></div>

</h3></h3></string,object></map<string,></%></body>
</html>
</%@></%--></%@></%@></%@></%@>

三、bootstrap分页

项目结构

jdbc分页
<%@ page import="cn.zcx.Demo2" %>
<%@ page import="cn.zcx.DbUtil" %>
<%@ page import="java.util.Map" %>
<%@ page import="java.util.List" %><%-- 3 5 2022 created by intellij idea. user: lenovo date: time: 9:41 to change this template use file | settings templates. --%>
<%@ page contenttype="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
<link rel="stylesheet" href="bootstrap/css/bootstrap.css">
    <style>

        h3{
            padding:3px;
            border-bottom: 1px dashed gray;
            width: 700px;
        }
        .page a{
            text-decoration: none;
            padding:  2px;
            margin: 2px;
            border: 1px solid gray;
        }
        .page span{
            text-decoration: none;
            padding: 2px;
            margin: 2px;
            background-color: rgba(34, 104, 232, 0.54);
            color:#fff;
            border:1px solid gray;
        }
    </style>
</head>
<body>
<% demo2 d="new" demo2(); dbutil du="new" dbutil(); int[] a="d.m2(2,"t_member");" int num="a[0];" pagesize="2;" pagecount="a[1];" currpage="request.getParameter("p")==null?" 1:integer.parseint(request.getparameter("p").tostring()); if(currpage <1)>pageCount) currpage=pageCount;
    List<map<string, object>> list = du.query("select *from t_member order by id desc limit ?,?",currpage*pageSize-pageSize,pageSize);
    for (Map<string,object> m:list) {
        out.print("<h3>"+m.get("truename")+"<h3>");
        out.print("<hr>");
    }
%>
<hr>
<div class="page">
    <ul class="pagination pagination-sm justify-content-center">
        <% int ss="1;" ee="10;" if(currpage>5){
                ss = currpage-5;
                ee = currpage+5;
            }
            if(currpage>1) {
                out.print(String.format("<li class="\"page-item\""><a class="\"page-link\"" href="\"?p=%d\"">&#x4E0A;&#x4E00;&#x9875;</a></li>",currpage-1));
            }else{
                out.print(String.format("<li class="\"page-item" disabled\"><span class="\"page-link\"">&#x4E0A;&#x4E00;&#x9875;</span></li>"));
            }
            for(int i = ss;i<=ee;i++){ if(i>pageCount) break;
                if(i == currpage){
                    out.print(String.format("<li class="\"page-item" active\"><span class="\"page-link\"">%d</span></li>",i));
                    continue;
                }
                out.print(String.format("<li class="\"page-item\""><a class="\"page-link\"" href="\"?p=%d\"">%<d< a></d<></a></li>",i));
            }
            if(currpage<pagecount) { out.print(string.format("<li class="\"page-item\""><a class="\"page-link\"" href="\"?p=%d\"">&#x4E0B;&#x4E00;&#x9875;</a>",currpage+1));
            }else{
                out.print(String.format("<li class="\"page-item" disabled\"><span class="\"page-link\"">&#x4E0B;&#x4E00;&#x9875;</span></li>"));
            }
        %>
    </pagecount)></=ee;i++){></%></ul>
</div>
</h3></h3></string,object></map<string,></%></body>
</html>
</%@></%--></%@></%@></%@></%@>

Original: https://www.cnblogs.com/zcxxcvbn/p/15967146.html
Author: 一份人间烟火
Title: jdbc分页

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/590765/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 2021 idea热部署

    依赖 org.springframework.boot spring-boot-devtools runtime true 导入 maven 插件 org.springframew…

    数据库 2023年6月14日
    099
  • MySQL实现阶段累加的sql写法 ,eq:统计余额

    最近项目碰到一个新的需求,统计每日充值/消费之后的余额。对于这种需求,其实也很简单,只需要在每次充值/消费后,计算下余额,然后保存下来就可以了。但是对于这种需求,一条sql就能搞定…

    数据库 2023年6月16日
    088
  • 异步线程里的日志不好追踪?小支一招,轻松搞定!

    众所周知,通过唯一的链路id来追踪一次请求的所有日志,对于排查生产问题来说,会是非常给力的。这个比较容易实现。我之前的博客也有多次提及 ▄︻┻┳═一 https://www.cnb…

    数据库 2023年6月9日
    089
  • 55 道MySQL基础题

    1.一张表,里面有 ID 自增主键,当 insert 了 17 条记录之后, 删除了第 15, 16, 17 条记录,再把 Mysql 重启,再 insert 一条记 录,这条记录…

    数据库 2023年5月24日
    0109
  • 【数据库】 — MySQL中查询当前时间间隔前1天的数据

    1.背景 在实际项目中,我们会遇到分布式定时任务执行的情况。有时在执行定时任务时,如果查询的数据量比较大,我们会选择执行前几天过滤的数据。 [En] In the actual p…

    数据库 2023年5月24日
    052
  • mysql解压版简洁式本地配置方式

    1. 设置全局变量 解压mysql压缩包到指定位置, 然后配置全局变量, 在 path 中添加全局变量, 值为 mysql 根目录下 bin 目录路径, 比如: D:\code_s…

    数据库 2023年6月14日
    074
  • Java 线程常用操作

    继Java线程生命周期继续学习Java线程其他常用操作 线程的常用操作 设置线程名字:setName() 获取线程名称:getName() 线程唯一Id:getId() // 自定…

    数据库 2023年6月6日
    084
  • Jenkins权限配置

    Jenkins权限配置 需要的插件 一、添加用户 二、修改配置 三、管理添加角色 添加全局查看角色 给全局角色添加用户(Anonymous-任何人) 添加角色(全局,项目) 检查项…

    数据库 2023年6月11日
    080
  • atomic 原子自增工程案例

    案例 1 : 简单用法 atomic_int id; atomic_fetch_add(&id, 1) atomic_uint id; atomic_fetch_add(&…

    数据库 2023年6月9日
    089
  • SQL 版本号排序

    SQL 语句直接对内容为版本号格式的字段进行排序时,排序效果通常不是最终想要的效果,因为最终需要的效果,是需对版本号里的每一段(通常以小数点分隔)按数值进行排序。 解决这个问题,主…

    数据库 2023年6月16日
    072
  • Java面试题(三)–虚拟机

    1 内存结构 1、简述一下JVM的内存结构?(高频) JVM在执行Java程序时,会把它管理的内存划分为若干个的区域,每个区域都有自己的用途和创建销毁时间。如下图所示,可以分为两大…

    数据库 2023年6月16日
    077
  • Elasticsearch搜索引擎的使用

    当用户在搜索框输入关键字后,我们要为用户提供相关的搜索结果。 这种需求依赖数据库的模糊查询like关键字可以实现,但是like关键字的效率极低,而且查询需要在多个字段中进行,使用l…

    数据库 2023年6月14日
    0136
  • 2_jQuery

    jQuery, 顾名思义, 也就是JavaScript和查询(Query), 它就是辅助JavaScript开发的js类库 它的核心思想write less, do more(写的…

    数据库 2023年6月11日
    097
  • day40-网络编程02

    Java网络编程02 4.TCP网络通信编程 基本介绍 基于客户端–服务端的网络通信 底层使用的是TCP/IP协议 应用场景举例:客户端发送数据,服务端接收并显示控制台…

    数据库 2023年6月11日
    073
  • [Mysql]Ubuntu如何安装Mysql+启用远程连接[完整版]

    唉。下面是我花了不知道多少个小时踩过的所有坑总结出来的血泪史,希望能帮你们少踩一些坑吧,正常来讲一步一步下来就不会出现任何问题了。 背景 用的是百度云的云服务器(其他云服务器同理)…

    数据库 2023年6月16日
    086
  • 云数据库技术行业动态@2022-09-30

    重要更新 时序数据库厂商「格睿云Greptime」已于近期完成天使轮融资。据介绍,本轮融资金额在数百万美金级别,由耀途资本领投,九合创投跟投。Greptime成立于2022年4月,…

    数据库 2023年6月11日
    0108
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球