当前位置: 首页 > news >正文

缓存、注解、分页

 一.缓存

        作用:应用查询上,内存中的块区域

              缓存查询结果,减少与数据库的交互,从而提高运行效率。

       1.SqlSession 缓存

1. 又称为一级缓存,mybatis自动开启

2. 作用范围:同一个session对象调用同一个<select>,

            第一次访问数据库,缓存到session缓存区。

   示例

//获取学生的Mapper对象
StudentMapper studentMapper=session.getMapper(StudentMapper.class);
//调用方法,获取所有的学生信息
List<Student> list=studentMapper.selectAll();
for (Student stu:list) {
    System.out.println(stu);
}
System.out.println("----------------------------------------------");
//调用方法,获取所有的学生信息
List<Student> list2=studentMapper.selectAll();
for (Student stu:list2) {
    System.out.println(stu);
}

效果:

      2.SqlSessionFactory 缓存

1. 又称为二级缓存,mybatis 不自动开启

2. 作用范围:同一个SqlSessionFactory对象中所有session都可以获取。

3. 打开mapper.xml配置开启二级缓存

      <cache readOnly="true"></cache>

4.只有当session.close()或commit()时,

   才会将session缓存的数据刷新到factory二级缓存中。

5. 适用于:频繁查询,很少被修改。

     实例

SqlSession session=sessionFactory.openSession();
//获取学生的Mapper对象
StudentMapper studentMapper=session.getMapper(StudentMapper.class);
//调用方法,获取所有的学生信息
List<Student> list=studentMapper.selectAll();
for (Student stu:list) {
    System.out.println(stu);
}
//只有当session.close()commit(),才会将session缓存的数据刷新到factory二级缓存中
session.close();
System.out.println("----------------------------------------------");
SqlSession session2=sessionFactory.openSession();
StudentMapper studentMapper2=session2.getMapper(StudentMapper.class);
//调用方法,获取所有的学生信息
List<Student> list2=studentMapper2.selectAll();
for (Student stu:list2) {
    System.out.println(stu);
}

效果:

二.Mybatis注解

      作用:简化mapper.xml配置,mapper.xml配置和注解可以共存

                 一般动态sql或复杂的sql语句,推荐使用mapper.xml配置

       1. 常用注解

@Delete(delete语句)

等价于<delete>标签

@Insert(insert语句)

等价于<insert>标签

@Update(update语句)

等价于<update>标签

@Select(select语句)

等价于<select>标签

        示例:

@Delete("delete from student where sid=#{id}")
public int deleteById(int id);

@Select("select * from student")
public List<Student> selectAll();

@Insert("insert into student values(#{sid},#{stuName},#{age},#{tid})")
public int  add(Student stu);

@Update("update student set stu_name=#{stuName},age=#{age},tid=#{tid} where sid=#{sid} ")
public int  update(Student stu);

三.PageHelper 分页插件

     PageHelper 是 MyBatis 中比较著名的分页插件,它提供了多种分页方式(例如 MySQL 和 Oracle 分页方式),支持多种数据库,并且使用非常简单。

   下面就介绍一下 PageHelper 的使用方式。

     1.pom.xml引入依赖

<!--分页-->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>5.1.11</version>
</dependency>

      2.mybatis.xml配置文件中添加 PageHelper 的插件

<!--添加 PageHelper 分页插件-->
<!--com.github.pagehelper.PageInterceptor  PageHelper 插件的名称,
   dialect 属性用于指定数据库类型(支持多种数据库)-->
<plugins>
    <plugin interceptor="com.github.pagehelper.PageInterceptor">
        <property name="helperDialect" value="mysql"/>
    </plugin>
</plugins>

     3.查询所有的老师信息的mapper

public interface TeacherMapper {
    @Select("select * from teacher")
    List<Teacher> selectAll();
}

      4.在查询方法中使用分页插件查询当前页的商品信息

@Test
public void testTeacherPage() {
    TeacherMapper teacherMapper = session.getMapper(TeacherMapper.class);
    //开启分页功能,在查询之前设置分页的当前页以及每页的条数
    PageHelper.startPage(2,2);
    //执行查询操作,获取查询数据

    List<Teacher> allTeachers = teacherMapper.selectAll();
    //通过PageInfo封装查询的list数据集合以及分页相关的数据
    PageInfo<Teacher> pageInfo = new PageInfo<>(allTeachers);
    System.out.println("pageInfo = " + pageInfo);
    long total = pageInfo.getTotal(); // 获取总记录数
    System.out.println("total = " + total);
    int pages = pageInfo.getPages();  // 获取总页数
    System.out.println("pages = " + pages);
    int pageNum = pageInfo.getPageNum(); // 获取当前页码
    System.out.println("pageNum = " + pageNum);
    int pageSize = pageInfo.getPageSize(); // 获取每页显示记录数
    System.out.println("pageSize = " + pageSize);
    List<Teacher> list = pageInfo.getList(); //获取查询页的数据集合
    for (Teacher t:list) {
        System.out.println(t);
    }
}

PageInfo对象获取分页相关信息的属性

方法名

描述

pageNum

当前页的页号

pageSize

每页显示的条数

size

当前页的实际条数

total

总条数

pages

总页数

prePage

上一页的页号

nextPage

下一页的页号

isFirstPage

是否为第一页

isLastPage

是否为最后一页

hasPreviousPage

是否存在上一页

hasNextPage

是否存在下一页

navigatePages

导航分页的页码数

navigatepageNums

导航分页的页码,[1,2,3,4,5]

相关文章:

缓存、注解、分页

一.缓存 作用&#xff1a;应用查询上&#xff0c;内存中的块区域。 缓存查询结果&#xff0c;减少与数据库的交互&#xff0c;从而提高运行效率。 1.SqlSession 缓存 1. 又称为一级缓存&#xff0c;mybatis自动开启。 2. 作用范围&#xff1a;同一…...

【数据结构与算法】第9课—数据结构之二叉树(链式结构)

文章目录 1. 二叉树的性质2. 链式结构二叉树3. 二叉树链式结构的4种遍历方式4. 二叉树节点个数5. 二叉树的叶子节点个数6. 二叉树第k层节点个数7. 二叉树的高度/深度8. 二叉树查找值为x的节点9. 二叉树的销毁10. 判断是否为完全二叉树11. 二叉树练习题11.1 单值二叉树11.2 相同…...

【CSS】居中样式

对于行内元素&#xff0c;使用 text-align: center。对于已知宽度的块级元素&#xff0c;使用 margin: 0 auto。对于需要灵活布局的元素&#xff0c;使用 Flexbox 或 Grid。 flex .parent {display: flex;justify-content: center; /* 水平居中 */align-items: center; /* 垂…...

Vite环境下uniapp Vue 3项目添加和使用环境变量的完整指南

一、引言 在uniapp项目中&#xff0c;合理配置环境变量对于提高开发效率和保障项目安全至关重要。Vite作为新一代的前端构建工具&#xff0c;为环境变量的管理提供了简洁而强大的支持。下面&#xff0c;我们将一步步学习如何在Vite环境下为uniapp Vue 3项目添加和使用环境变量…...

mysql-springboot netty-flink-kafka-spark(paimon)-minio

1、下载spark源码并编译 mkdir -p /home/bigdata && cd /home/bigdata wget https://archive.apache.org/dist/spark/spark-3.4.3/spark-3.4.3.tgz 解压文件 tar -zxf spark-3.4.3.tgz cd spark-3.4.3 wget https://raw.githubusercontent.com/apache/incubator-celeb…...

讨论一个mysql事务问题

最近在阅读一篇关于隔离级别的文章&#xff0c;文章中提到了一种场景&#xff0c;我们下面来分析一下。 文章目录 1、实验环境2、两个实验的语句执行顺序3、关于start transaction和start transaction with consistent snapshot4、实验结果解释4.1、实验14.2、实验24.3、调整实…...

pytest插件精选:提升测试效率与质量

pytest作为Python生态系统中备受推崇的测试框架&#xff0c;以其简洁、灵活和可扩展性赢得了广泛的认可。通过合理使用pytest的各种插件&#xff0c;可以显著提升测试效率、增强测试的可读性和可维护性。 pytest-sugar&#xff1a;提升测试体验 pytest-sugar是一款增强版的py…...

HTB:Sightless[WriteUP]

目录 连接至HTB服务器并启动靶机 使用nmap对靶机TCP端口进行开放扫描 继续使用nmap对靶机开放的TCP端口进行脚本、服务扫描 首先尝试对靶机FTP服务进行匿名登录 使用curl访问靶机80端口 使用浏览器可以直接访问该域名 使用浏览器直接访问该子域 Getshell 横向移动 查…...

国产化浪潮下,高科技企业如何选择合适的国产ftp软件方案?

高科技企业在数字化转型和创新发展中&#xff0c;数据资产扮演着越来越重要的角色。在研发过程中产生的实验数据、设计文档、测试结果等&#xff0c;专利、商标、版权之类的创新成果等&#xff0c;随着信息量急剧增加和安全威胁的复杂化&#xff0c;传统的FTP软件已经不能满足这…...

自注意力机制

当输入一系列向量&#xff0c;想要考虑其中一个向量与其他向量之间的关系&#xff0c;决定这个向量最后的输出 任意两个向量之间的关系计算 计算其他向量对a1的关联性 多头注意力机制 图像也可以看成一系列的向量&#xff0c;交给自注意力机制处理&#xff0c;CNN是特殊的自注意…...

抽象工厂模式详解

1. 引言 1.1 设计模式概述 设计模式&#xff08;Design Patterns&#xff09;是软件开发中解决常见问题的一种最佳实践。它们通过总结经验&#xff0c;提供了一套被验证有效的代码结构和设计原则&#xff0c;帮助开发者提高代码的可维护性、可重用性和可扩展性。 设计模式主…...

【Linux】软硬链接和动静态库

&#x1f525; 个人主页&#xff1a;大耳朵土土垚 &#x1f525; 所属专栏&#xff1a;Linux系统编程 这里将会不定期更新有关Linux的内容&#xff0c;欢迎大家点赞&#xff0c;收藏&#xff0c;评论&#x1f973;&#x1f973;&#x1f389;&#x1f389;&#x1f389; 文章目…...

HarmonyOS入门 : 获取网络数据,并渲染到界面上

1. 环境搭建 开发HarmonyOS需要安装DevEco Studio&#xff0c;下载地址 : https://developer.huawei.com/consumer/cn/deveco-studio/ 2. 如何入门 入门HarmonyOS我们可以从一个实际的小例子入手&#xff0c;比如获取网络数据&#xff0c;并将其渲染到界面上。 本文就是基于…...

【贪心】【哈希】个人练习-Leetcode-1296. Divide Array in Sets of K Consecutive Numbers

题目链接&#xff1a;https://leetcode.cn/problems/divide-array-in-sets-of-k-consecutive-numbers/description/ 题目大意&#xff1a;给出一个数组nums[]和一个数k&#xff0c;求nums[]能否被分成若干个k个元素的连续的子列。 思路&#xff1a;比较简单&#xff0c;贪心就…...

【数据库实验一】数据库及数据库中表的建立实验

目录 实验1 学习RDBMS的使用和创建数据库 一、 实验目的 二、实验内容 三、实验环境 四、实验前准备 五、实验步骤 六、实验结果 七、评价分析及心得体会 实验2 定义表和数据库完整性 一、 实验目的 二、实验内容 三、实验环境 四、实验前准备 五、实验步骤 六…...

Web服务nginx基本实验

安装软件&#xff1a; 启动服务&#xff1a; 查看Nginx服务器的网络连接信息&#xff0c;监听的端口&#xff1a; 查看默认目录&#xff1a; 用Windows访问服务端192.168.234.111的nginx服务&#xff1a;&#xff08;防火墙没有放行nginx服务&#xff0c;访问不了&#xff09; …...

Ubuntu实现双击图标运行自己的应用软件

我们知道在Ubuntu上编写程序&#xff0c;最后编译得到的是一个可执行文件&#xff0c;大致如下 然后要运行的时候在终端里输入./hello即可 但是这样的话感觉很丑很不方便&#xff0c;下边描述一种可以类似Windows上那种双击运行的实现方式。 我们知道Ubuntu是有一些自带的程序…...

js id字符串转数组

将一个逗号分隔的字符串&#xff08;例如 "12,123,213,"&#xff09;转换为一个 JavaScript 数组&#xff0c;并去除多余的逗号&#xff0c;可以使用以下几种方法。这里我将展示几种常见的方式&#xff1a; 方法 1: 使用 split 和 filter 你可以使用 split 方法将字…...

《手写Spring渐进式源码实践》实践笔记(第十八章 JDBC功能整合)

文章目录 第十八章 JDBC功能整合背景技术背景JDBC JdbcTemplate关键特性 用法示例业务背景 目标设计实现代码结构类图实现步骤 测试事先准备属性配置文件测试用例测试结果&#xff1a; 总结 第十八章 JDBC功能整合 背景 技术背景 JDBC JDBC&#xff08;Java Database Conne…...

边缘计算在智能交通系统中的应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 边缘计算在智能交通系统中的应用 边缘计算在智能交通系统中的应用 边缘计算在智能交通系统中的应用 引言 边缘计算概述 定义与原…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

多场景 OkHttpClient 管理器 - Android 网络通信解决方案

下面是一个完整的 Android 实现&#xff0c;展示如何创建和管理多个 OkHttpClient 实例&#xff0c;分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

2024年赣州旅游投资集团社会招聘笔试真

2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制

在数字化浪潮席卷全球的今天&#xff0c;数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具&#xff0c;在大规模数据获取中发挥着关键作用。然而&#xff0c;传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时&#xff0c;常出现数据质…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)

目录 一、&#x1f44b;&#x1f3fb;前言 二、&#x1f608;sinx波动的基本原理 三、&#x1f608;波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、&#x1f30a;波动优化…...

均衡后的SNRSINR

本文主要摘自参考文献中的前两篇&#xff0c;相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程&#xff0c;其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt​ 根发送天线&#xff0c; n r n_r nr​ 根接收天线的 MIMO 系…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP

编辑-虚拟网络编辑器-更改设置 选择桥接模式&#xff0c;然后找到相应的网卡&#xff08;可以查看自己本机的网络连接&#xff09; windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置&#xff0c;选择刚才配置的桥接模式 静态ip设置&#xff1a; 我用的ubuntu24桌…...