前端显示分页详解(一)

news2025/1/16 11:27:36

       我们在浏览页面的时候,是不是经常看到网页经常是以页面的形式给我们展现出来的,我们以淘宝的页面为例(如下图),那这样按照页面呈现有什么好处呢?这篇文章让我们来深入探究了解这其中的奥秘。

 优点:分页可以减少数据库的搜索次数,降低数据库的压力,每次只需要查询该页的数据,不需要向原来一样每次查询都查询数据库里的全部的数据。

前端:

  1.我们在Element中找到对应组件

   2. 找到一个合适的组件,赋值粘贴到HTML中

		<div class="block">
		    <el-pagination
			  @size-change="handleSizeChange"
			  @current-change="handleCurrentChange"
		      :current-page="form.pageNum"
		      :page-sizes="[2, 4, 6, 10]"
		      :page-size="2"
		      layout="total, sizes, prev, pager, next, jumper"
		      :total="total">
		    </el-pagination>
		  </div>
     </el-card>
</template>

 后续操作后端说完再进行介绍

后端:

以前在数据库中,我们经常用limit进行分页

/*
分页;一个显示一部分数据,可以分页显示
      假定有5条数据,每一页想显示2条数据
     
      第一页查询前两条数据  limit 0,2
      第二页查询  limit 2,2
      第三页查询  limit 4,2
      
      在mysql数据库中可以使用limit实现分页功能
      
      需要掌握的条件:
      总共多少页:总条数(可以查出来的)/每页显示的数量 (前端可以计算)
      
      每页显示多少条数据(已知)
      当前页数:默认是第一页(已知)
      
*/

但是今天给大家介绍一个更加简便的方法进行分页

1.在poml.xml中添加相关的依赖

<!-- pagehelper依赖 -->
		<dependency>
			<groupId>com.github.pagehelper</groupId>
			<artifactId>pagehelper-spring-boot-starter</artifactId>
			<version>1.2.5</version>
		</dependency>

 2.在相关类中添加属性,并生成get、set方法

3..在Service类中添加以下代码:

具体的类以自己的为主,我这里的类是Admin

PageHelper.startPage(admin.getPageNum(),admin.getPageSize());//自动生成limit,添加到sql后面
        List<Admin> adminList = admindao.adminList(admin);//查询数据,拼接limit,还会自动的生成sql,查询总记录数
        PageInfo<Admin> pageInfo = new PageInfo<>(adminList);//把所有分页相关的数据封装到PageInfo对象中
        return pageInfo;

3.利用mybatis进行映射

<select id="adminList" resultType="Admin">
        SELECT * FROM admin WHERE TYPE=1
    </select>

注意在映射时,会有映射失败的时候。有的属性为nul,这种情况又怎么回事呢?

映射的方法有两种:

  1. resultMap
  2. resultType

 resultMap:

<mapper namespace="com.ffyc.dao.RoleListDao">
    <resultMap id="RoleMap" type="Role">
        <id column="id" property="id"></id>
        <result column="name" property="name"></result>
        <result column="oper_time" property="oper_time"></result>
        <association property="admin" javaType="Admin">
            <result column="account" property="account"></result>
        </association>
    </resultMap>
    <select id="roleList"  parameterType="Role" resultMap="RoleMap">
    SELECT
    r.id,
    r.name,
    a.account,
    r.oper_time
    FROM ROLE r LEFT JOIN admin a ON r.adminid=a.id
    </select>

通过编写resultMap。如下将数据库字段和实体类字段进行映射。其中,column为数据库字段,property为实体类字段。

resultType:

 <select id="adminList" resultType="Admin">
        SELECT * FROM admin WHERE TYPE=1
    </select>

此时resultType 指向具体的实体类。

映射成功需要满足两个条件

  1. 数据库中的表名要与实体类的对应字段相同+
  2. 如果数据库表名中包含有下划线-,那么实体类的对应字段必须要用驼峰命名,才可以映射成功

 

 在sprigboot要成功进行映射的话,必须要进行的一步:

#mybatis配置  创建SqlsessionFactory
mybatis:
   type-aliases-package: com.ffyc.model
   mapper-locations: classpath:mappers/*Mappers.xml
   configuration: #mybatis settings配置
     map-underscore-to-camel-case: true #自动映射
     cache-enabled: true

 还有一个错误需要大家小心

 在mybatis查询时,SQL语句对的情况下也未必能查到数据,例如上图

在映射的时候,是通过属性类型进行映射,类中的属性与映射的类型不一致时,也无法进行映射

 private Integer password;


public int getPassword() {
        return password;
    }

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

我们再说前端

//查询管理员列表  

findAdmins(){
                 this.$http.post("adminList",this.form).then((resp)=>{
                         this.adminlist = resp.data.data.list; //resp.commonResult.pageInfo.list;
                         this.total = resp.data.data.total;//把总条数赋分页组件,组件就可以计算总页数...
                 });
             }

下面给大家奉上前端代码

<template>
	<el-card class="box-card">
        <!-- 查询条件-->
		<el-row :gutter="20">
			<el-col :span="6">
				<el-input placeholder="请输入账号" v-model="form.account"></el-input>
			</el-col>
			<el-col :span="6">
				<el-button type="primary" icon="el-icon-search" @click="findAdmins()" >查询</el-button>
			</el-col>
		 </el-row>
		 <br/>

		<el-table :data="adminlist" border style="width: 100%">
			<el-table-column prop="account" label="账号" width="100"></el-table-column>
			<el-table-column prop="account" label="操作人"></el-table-column>
			<el-table-column prop="operTime" label="操作时间" align="center"></el-table-column>
			<el-table-column label="操作" fixed="right">
				<template slot-scope="scope">
					<el-button size="mini"  >编辑</el-button>
					<el-button size="mini" type="danger" >删除</el-button>
				</template>
			</el-table-column>
		</el-table>
		
		<div class="block">
		    <el-pagination
			  @size-change="handleSizeChange"
			  @current-change="handleCurrentChange"
		      :current-page="form.pageNum"
		      :page-sizes="[2, 4, 6, 10]"
		      :page-size="2"
		      layout="total, sizes, prev, pager, next, jumper"
		      :total="total">
		    </el-pagination>
		  </div>
     </el-card>
</template>

<script>
	export default {
		data() {
			return {
				adminlist: [],
				total:0,
				form:{ //都是每次向后端发送的值
					account:"",//查询条件 ,
					pageNum:1,//默认是第一页
					pageSize:2//默认每一页显示2条数据
				}
			}
		},
		methods: {
			//当改变下拉框页数大小时触发
             handleSizeChange(val) {
                 this.form.pageSize = val;
				 this.findAdmins();
             },
			 //当改变当前页数时触发
             handleCurrentChange(val) {
                 this.form.pageNum=val;
				 this.findAdmins();
             },
			 //查询管理员列表
			 findAdmins(){
				 this.$http.post("adminList",this.form).then((resp)=>{
					 console.log(resp);
				 	    this.adminlist = resp.data.data.list; //resp.commonResult.pageInfo.list;
				 		this.total = resp.data.data.total;//把总条数赋分页组件,组件就可以计算总页数...
				 });
			 }
		},
		mounted() {
			this.findAdmins();
		}
	}
</script>

<style>
</style>

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

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

相关文章

分享10个比B站更刺激的网站,千万别轻易点开

作为一个码龄8年程序员&#xff0c;到现在还能保持着浓密的头发和健壮的身体&#xff0c;全靠这10个网站让我健&#xff08;偷&#xff09;康&#xff08;偷&#xff09;生&#xff08;摸&#xff09;活&#xff08;鱼&#xff09;&#xff0c;今天就把我收藏夹里的网站无私分享…

@Windows server 2022 搭建 AD 域服务器

文章目录1.AD(Active Directory)Windows Server环境准备2.配置AD环境3.添加角色和功能4.配置域控服务器5.配置 AD 域 OU 和用户6.Client计算机加入域控管理7.使用AD账号测试登录客户端1.AD(Active Directory)Windows Server环境准备 主机名称IP角色AD_Server192.168.1.221AD服…

Omnet+Sumo+Veins安装配置总结(Windows 10按照配置成功)

** 写在前面 ** 博主是一枚车联网小白&#xff0c;该博客只是完整记录了博主安装配置&#xff08;Veins 4.7.1SUMO 0.30.0OMNeT 5.4.1&#xff09;环境的过程&#xff0c;电脑是win10操作系统&#xff0c;期间主要参考官网给的教程和网上其他大佬的文档。 第一步&#xff1a…

数图互通高校房产管理——货币化补贴管理

数图互通房产管理系统在这方面做得比较全面&#xff1b; 1、货币化补贴 住房补贴主要分为按月补贴、一次性补贴、差额补贴、级差补贴和职务职称变动补贴&#xff0c;系统可自动计算补发金额及之后每月的应发补贴金额。系统可导出学校每月的住房补贴发放明细表&#xff0c;可以…

毕业设计-基于大数据的移动图书馆个性化推荐系统-python

目录 前言 课题背景和意义 实现技术思路 实现效果图样例 前言 &#x1f4c5;大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科…

算法为何重要(《数据结构与算法图解》by 杰伊•温格罗)

本文内容借鉴一本我非常喜欢的书——《数据结构与算法图解》。学习之余&#xff0c;我决定把这本书精彩的部分摘录出来与大家分享。 写在前面 算法这个词听起来很深奥&#xff0c;其实不然。它只是解决某个问题的一套流程。 准备一碗麦片的流程也可以说是一种算法&#xff0…

谷歌将于2023年初在Android 13上推出隐私沙盒测试版

©网络研究院 互联网巨头谷歌表示&#xff0c;计划从明年年初开始&#xff0c;在运行Android 13的移动设备上推出安卓隐私沙盒测试版。 该公司表示:“隐私沙盒测试版将面向希望测试广告相关API作为其解决方案一部分的广告技术和应用开发者开放。” 为此&#xff0c;开发者…

解密 MySQL 的主备一致

MySQL 实现主备一致肯定是 binlog。毫不夸张的说&#xff0c;MySQL 能够成为现在最流行的开源数据库&#xff0c;binlog 功不可没。 MySQL主备的基本原理 ​ 主备流程图备库 B 跟主库 A 之间维持了一个长连接。主库 A 内部有一个线程&#xff0c;专门用于服务备库 B 的这个长…

漏洞深度分析|Pgadmin 命令执行漏洞

项目介绍 PostgreSQL是世界上第四大流行的开源数据库管理系统&#xff0c;它在各种规模的应用程序中得到了广泛的使用。而管理数据库的传统方法是使用命令行界面(CLI)工具。 PostgreSQL的图形化用户界面(GUI)工具则可以帮助用户对数据库实现更好的管理、操纵、以及可视化其数…

这些方法助你打好年终收官战

一、减少推文中的链接数量 研究表明&#xff0c;没有链接的推文更容易产生粉丝互动。所以你不必在每条推文中都包含链接。链接的精妙在于精而不在于杂。所以如果你限制包含链接的推文数量&#xff0c;你会发现你推文的粉丝参与度会增加。 少量的链接更有利于和粉丝建立信任&a…

【从零开始学习深度学习】27.卷积神经网络之VGG11模型介绍及其Pytorch实现【含完整代码】

目录1. VGG块介绍2. 构造VGG网络模型3. 获取Fashion-MNIST数据并用VGG-11训练模型4.总结AlexNet在LeNet的基础上增加了3个卷积层。但AlexNet对卷积窗口、输出通道数和构造顺序均做了大量的调整。虽然AlexNet模型表明深度卷积神经网络可以取得出色的结果&#xff0c;但并没有提供…

C++ Reference: Standard C++ Library reference: Containers: map: map: emplace

C官网参考链接&#xff1a;https://cplusplus.com/reference/map/map/emplace/ 公有成员函数 <map> std::map::emplace template <class... Args> pair<iterator,bool> emplace (Args&&... args);构造并插入元素 如果元素的键是唯一的&#xff0c;…

【沙拉查词】沙拉查词配置教程——如何实现截图OCR翻译、截图翻译?

一、问题背景 2022年12月16日&#xff0c;沙拉查词仍然没有截图翻译的功能。 这个功能&#xff0c;在百度翻译上虽然能够实现&#xff0c;但是要额外下一个软件和挂在后台&#xff0c;总是觉得麻烦。 二、解决方法 如果你是一个quicker软件使用者&#xff0c;那么通过添加「…

python中的字典详解

目录 一.思考 二.字典定义 注意 三.字典数据的获取 注意 字典的嵌套 四.字典常用操作 1.新增、更新元素 2.删除元素 3.清空字典 4.获取全部Key 5.利用Key遍历字典 五.字典总结 六.字典实例 一.思考 为什么需要字典? 生活中的字典我们可以根据【字】来找到对应的【含…

QT-Linux安装

1、在虚拟机Ubuntu的环境安装好之后&#xff0c;详细看&#xff1a; QT Linux环境搭建——VM虚拟机和Ubuntu的安装_sgmcy的博客-CSDN博客 下面就可以直接安装linux环境下的QT了 2、唯一要注意的一点是&#xff0c;之前安装虚拟机的时候&#xff0c;磁盘空间一定要大一点&…

第十四届蓝桥杯集训——JavaC组第十四篇——嵌套循环

第十四届蓝桥杯集训——JavaC组第十四篇——循环嵌套 目录 第十四届蓝桥杯集训——JavaC组第十四篇——循环嵌套 循环嵌套是逻辑程序中的方法 对应嵌套的循环复杂度 嵌套循环示例&#xff1a; 名词解析&#xff1a; 笛卡尔积 循序命名 循环嵌套是逻辑程序中的方法 循环嵌…

“无人区”行驶8年,李诞的脱口秀路在何方?

刚从《脱口秀大会5》的舞台上下来的李诞&#xff0c;给自己找了份“新工作”——脱口秀直播带货。 12月10日晚&#xff0c;李诞入淘。讲段子、玩梗手到擒来&#xff0c;李诞将自己风趣幽默的脱口秀风格沿用到了这场“来个彩诞”直播首秀中&#xff0c;给交个朋友贡献了超3200万…

5.单点登录(Vue2.x)

概况 百度百科 单点登录&#xff08;Single Sign On&#xff09;&#xff0c;简称为 SSO&#xff0c;是比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中&#xff0c;用户只需要登录一次就可以访问所有相互信任的应用系统。 关键词 token、session、cooki…

Java基础之《netty(13)—任务队列taskQueue》

一、任务队列 1、用户程序自定义的普通任务 2、用户自定义定时任务 3、非当前Reactor线程调用Channel的各种方法 例如在推送系统的业务线程里面&#xff0c;根据用户的标识&#xff0c;找到对应的Channel引用&#xff0c;然后调用Write类方法向该用户推送消息&#xff0c;就…

基于java+springmvc+mybatis+vue+mysql的养老院管理系统

项目介绍 管理员后台页面&#xff1a; 功能&#xff1a;主页、个人中心、护工管理、家属管理、楼房资料管理、房间资料管理、床位管理、老人入住管理、老人档案管理、身体状态管理、用药情况管理、转房登记管理、外出登记管理、药品信息管理、药品入库管理、药品出库管理、物品…