Mybatis学习(2)

分页

目的:减少数据的处理量

方式一:使用limit实现分页,核心SQL

sql语法:select * from user limit startIndex,pageSize;

步骤:

1、接口

2、Mapper.xml

3、测试

方式二:使用注解开发 

1、注解在接口上实现

 Mybatis详细的执行流程

方法存在多个参数,所有的参数前面必须加上@Param(“id”)注解

  • 基本类型的参数或String类型,需要加上
  • 引用类型不需要加
  • 如果只有一个基本类型的话,可以忽略,但是建议大家都加上
  • 我们在SQL中引用的就是我们这里的@Param(“id”)中设定的属性名

 可以在工具类(utils)创建的时候实现自动提交事务

 Lombok

偷懒省事!

1、在IDEA中安装Lombok插件(后来版本自带)

2、在项目中导入lombok的jar包

3、在实体类上加注解即可!

@Data:无参构造、get、set、toString、hashcode、equals

@AllArgsConstructor:有参构造

@NoArgsConstructor:无参构造

多对一处理

多个学生,对应一个老师

对于学生而言【多对一】:关联

对于老师而言【一对多】:集合

测试环境搭建

1、导入lombok

2、新建实体类Teacher、Student

3、建立Mapper接口

4、建立Mapper.xml文件

5、在核心配置文件中绑定注册我们的Mapper接口或者文件(多种方法)

6、测试查询是否能够成功

按照结果嵌套处理(联表查询)

按照查询嵌套处理(子查询)

 

 一对多处理

对于老师而言,就是一对多的关系

按照结果嵌套处理

按照查询嵌套处理

 小结

1、关联-association【多对一】

2、集合-collection【一对多】

3、javaType  &  ofType

    ①javaType用来指定实体类中属性的类型

    ②ofType用来指定映射到List或者集合中的pojo类型,泛型中的约束类型!

动态SQL 

  • 根据不同的条件生成不同的SQL语句
  • 所谓的动态SQL,本质还是SQL语句,只是我们可以在SQL的层面,去执行一个逻辑代码
  • 动态SQL就是在拼接SQL语句

创建一个基础工程

1、导包

2、编写配置文件

3、编写实体类

4、编写实体类对应Mapper接口和Mapper.xml文件

if

choose(when,otherwise)

trim(where,set)

 

foreach

SQL片段

有的时候,我们可能会将一些功能的部分抽取出来,方便复用!

1、使用SQL标签抽取公共的部分

2、在需要使用的地方使用Include标签引用即可

缓存

一级缓存

  • 一级缓存也叫本地缓存:SqlSession级别
  • 与数据库同一次会话期间查询到的数据会放在本地缓存中
  • 以后如果需要获取相同的数据,直接从缓存中拿,没必要再去查询数据库

缓存失效的情况:

1、查询不同的东西

2、增删改操作,可能会改变与原来的数据,所以必定会刷新缓存!

3、查询不同的Mapper.xml

4、手动清理缓存!sqlSession.clearCache();

小结:一级缓存是默认开启的,只在一次SqlSession中有效,也就是拿到连接到关闭连接这个区间段!

二级缓存 

步骤:

1、开启全局缓存

2、在要使用二级缓存的Mapper中开启,也可以自定义参数

3、测试

遇到的问题:需要将实体类序列化,不然会报错!

小结:

  • 只要开启了二级缓存,在同一个Mapper下就有效
  • 所有数据都会先放在一级缓存中
  • 只有当会话提交,或者关闭的时候,才会提交到二级缓存中!

 缓存原理

缓存顺序:

1、先看二级缓存中有没有

2、再看一级缓存中有没有

3、都没有再查询数据库

 

自定义缓存(ehcache) 

是一种开源Java分布式缓存

步骤:

1、导包

2、在mapper中指定用ehcache缓存

3、ehcache.xml

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

每日一题~EC168 A+B+C+D

A 题意: 字符串 每一个字符的花费是2,如果ai-1 ai ,那么ai 的花费是1. 现在可以插入一个字符,得到最大花费。输出插入字符之后的字符串。 分析:只需要在相同的连续字符中间插入一个不同的字符就可以了。如果没有连续的相同字符&am…

Python酷库之旅-第三方库Pandas(059)

目录 一、用法精讲 226、pandas.Series.pad方法 226-1、语法 226-2、参数 226-3、功能 226-4、返回值 226-5、说明 226-6、用法 226-6-1、数据准备 226-6-2、代码示例 226-6-3、结果输出 227、pandas.Series.replace方法 227-1、语法 227-2、参数 227-3、功能 …

最强开源模型 Llama 3.1 部署推理微调实战大全

目录 引言一、Llama 3.1简介二、Llama 3.1性能评估三、Llama 3.1模型推理实战1、环境准备2、安装依赖3、模型下载4、模型推理 四、Llama 3.1模型微调实战1、数据集准备2、导入依赖包3、读取数据集4、处理数据集5、定义模型6、Lora配置7、配置训练参数8、开始Trainer训练9、合并…

什么是负责任的人工智能

「AI秘籍」系列课程: 人工智能应用数学基础人工智能Python基础人工智能基础核心知识人工智能BI核心知识人工智能CV核心知识AI 进阶:企业项目实战 可直接在橱窗里购买,或者到文末领取优惠后购买: 拥有权利的同时也被赋予了重大的…

Modbus通讯协议

Modbus通讯协议 Modbus协议是一种用于电子控制器之间的通信协议,‌它允许不同类型的设备之间进行通信,‌以便进行数据交换和控制。‌Modbus协议最初为可编程逻辑控制器(‌PLC)‌通信开发,‌现已广泛应用于工业自动化领…

详细分析nohup后台运行命令

目录 1. 基本知识2. Demo 1. 基本知识 Unix/Linux 命令,用于在后台运行程序,并确保它在用户退出或注销后继续运行 nohup 的主要作用是使程序在终端会话结束后继续运行,这对需要长时间执行的任务特别有用 基本的用法如下: nohu…

3.1 拓扑排序

有向图的存储 邻接矩阵 邻接表 拓扑排序 有向无环图:不存在环的有向图 环: 在有向图中,从一个节点出发,最终回到它自身的路径被称为环 入度: 以节点x为终点的有向边的条数被称为x的入度 出度: 以节…

哈默纳科HarmonicDrive谐波减速机的使用寿命计算

在机械传动系统中,减速机的应用无处不在,而HarmonicDrive哈默纳科谐波减速机以其独特的优势,如轻量、小型、传动效率高、减速范围广、精度高等特点,成为了众多领域的选择。然而,任何机械设备都有其使用寿命&#xff0c…

数据集成是什么意思?方法有哪些?数据集成三种方法介绍

1 数据集成是什么 数据集成(Data Intergration),也称为数据整合,是通过将分布式环境中的异构数据集成起来,为用户提供统一透明的数据访问方式。该定义中的集成是指从整体层面上维护数据的一致性,并提高对数据的利用和共享&#x…

【Redis 进阶】事务

Redis 的事务和 MySQL 的事务概念上是类似的,都是把一系列操作绑定成一组,让这一组能够批量执行。 一、Redis 的事务和 MySQL 事务的区别 1、MySQL 事务 原子性:把多个操作打包成一个整体。(要么全都做,要么都不做&am…

用 Python 编写的井字游戏

一.介绍 在本文中,我将向您展示如何使用 Python 创建一个非常简单的井字游戏。 井字游戏是一种非常简单的双人游戏。因此每次只能有两个玩家玩。该游戏也称为井字游戏或 Xs 和 Os 游戏。一个玩家玩 X,另一个玩家玩 O。在这个游戏中,我们有一…

树组件 el-tree 数据回显

树组件 el-tree 数据回显 树型结构的数据回显问题&#xff1a; 这里我只放了核心代码&#xff0c;主要是如何获取选中的树节点的id集合和如何根据树节点的id集合回显数据 大家根据需要自行更改&#xff01; <el-tree ref"authorityRef" node-key"id" …

SSH访问控制:精确管理你的服务器门户

“ 在数字世界中&#xff0c;服务器的安全性是任何网络管理员的首要任务。特别是对于远程登录协议如SSH&#xff0c;确保只有授权用户可以访问是至关重要的。 今天&#xff0c;记录两种有效的方法来控制用户对特定服务器的访问&#xff1a;通过sshd_config实现黑/白名单机制和利…

【Python】pandas:替换值、添加行/列,删除行/列,更改形状(含数据透视表)

pandas是Python的扩展库&#xff08;第三方库&#xff09;&#xff0c;为Python编程语言提供 高性能、易于使用的数据结构和数据分析工具。 pandas官方文档&#xff1a;User Guide — pandas 2.2.2 documentation (pydata.org) 帮助&#xff1a;可使用help(...)查看函数说明文…

前端面试宝典【HTML篇】【4】

欢迎来到《前端面试宝典》,这里是你通往互联网大厂的专属通道,专为渴望在前端领域大放异彩的你量身定制。通过本专栏的学习,无论是一线大厂还是初创企业的面试,都能自信满满地展现你的实力。 核心特色: 独家实战案例:每一期专栏都将深入剖析真实的前端面试案例,从基础知…

【区块链+绿色低碳】山东邹平:区块链生态环境监管平台 | FISCO BCOS应用案例

山东省滨州市生态环境局邹平分局通过实地考察和调研发现&#xff0c;执法大队在执法工作中存在各排污企业设备系统无 法互通、终端采集数据固证难且可信度低、环境执法电子证据采集规则与司法采信标准不统一等痛点。而区块链 的分布式记账、不易篡改性和智能合约自动执行机制&a…

【源码+文档+调试讲解】学生党务学习系统的设计与实现

摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统大学生党务学习平台信息管理难度大&#xff0c;容错率低&…

前端技术回顾系列 14 | 总结 + Vue 3.x 必修课

欢迎关注公众号&#xff1a;CodeFit 创作不易&#xff0c;如果你觉得这篇文章对您有帮助&#xff0c;请不要忘了 点赞、分享 和 关注&#xff0c;为我的 持续创作 提供 动力&#xff01; 1. 回顾系列的初衷和目标 在六月初&#xff0c;我开始编写 「前端技术回顾系列 2024」&a…

C++基础知识:构造函数的分类和调用,有参构造和无参构造,有参构造和无参构造,三种调用方式:括号法,显示法,隐式转换法,以及相关代码演示和注意事项

1.构造函数的分类及调用: 2.两种分类方式: 按参数分为: 有参构造和无参构造 按类型分为:有参构造和无参构造 3.三种调用方式: 括号法 显示法 隐式转换法 2.调用方法代码演示 1.括号法代码演示&#xff1a; #include<iostream>using namespace std;//1.构造函数的分类和…

8、springboot3 vue3开发平台-后端-使用aop 添加系统访问日志

1. 添加依赖&#xff0c; 创建数据库 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency><!-- IP地址解析 --><dependency><groupId>org.lionsou…