MyBatis 学习心得笔记

简介: MyBatis 学习心得笔记

MyBatis 高级映射

局部懒加载: 在association 标签中添加fecthType = “lazy”

多对一: private Student student;

全局懒加载: lazyLoadingEnabled = true

延迟加载的全局开关。当开启时,所有关联对象都会延迟加载。

特定关联关系中可通过设置 fetchType

属性来覆盖该项的开关状态

一对多:

private List student ;

第一种方式:collection

84fc914a1bad4f38b575c791a34472ac.png

第二种分步查询:可复用性增强,支持延迟加载

5cbaacf3bd7a40be80104b46d0edd962.png

Mybatis 缓存

cache

作用:缓存通过减少sql 查询的操作,来提高程序的执行效率,mybatis 语句的查询结果放到缓存中,当下一次还是还是这一条sql 语句时,直接从缓存中取,不再查询数据库,效率得到大幅度的提升。

mybatis 缓存:

一级缓存: 将查新到的数据存储到sqlSession中 ,一级缓存默认开启,不需要做任何的配置,只要使用同一个sqlSession 对象执行同一条SQL 语句,就会走缓存。

什么时候不走缓存?

1,SqlSession 对象不是同一个,

2,查询条件不一样也不走缓存

什么时候一级缓存失效?

第一次查询语句和第二次查询语句之间,做一下任意的一件事都会让缓存清空

1,执行 了sqlSession 的clearChace 方法,这是手动清除缓存

2,执行了Insert, 或delete 或, update 任意一个语句

二级缓存:

将查询到的数据存储到sqlSessionFactory 中

1,<setting name = "cacheEnabled " value = " true " 全局性的开启或者关闭所有的映射配置文件中已经配置的任何缓存,默认就是true .

2,在需要使用二级缓存的SqlMapper.xml 文件中添加配置: <cache /》

3,使用二级缓存的实体类对象必须是可序列化的,也就是必须实现serializable 接口

4,sqlsession 对象关闭或者提交之后,一级缓存中的数据才会被写入二级缓存中去,此时二级缓存才可用。

=====> 默认情况下:二级缓存机制是开启的,只需要在对应的sqlMapper 文件中 使用<cache/》 标签,来表明我使用二级缓存。

动态sql

当if 传递的三个值均为空的情况下

a1762aab85c04df4a198b602163cf629.png

where 标签:可以动态的裁剪and

ad6c27cc088141829ed36fbe503db49a.png

trim 标签的属性:

prefix:在trim 标签中的语句前添加内容

suffix:在trim 标签中的语句后添加内容

prefixOverrides : 前缀覆盖去掉

suffixOverrides : 后缀覆盖掉

7455339f1d6243579b4452ac7e791f83.png

set标签:

主要是使用在update 语句当中,用来生成set 关键字,同时去掉最后多余的“ , ”

比如我们只提交不为空的字段,如果提交的数据是空,或者选择性的添加修改数据,那个这个字段将不会更新。

1893dfedd0994097bfc7124eb7078b24.png

这三个标签在一起使用: 都不需要加 and 因为只会走一条语句

b5bf32034eae49378247870b28e073f7.png

等同与:

if (){
} else if (){
} else {
}

只有一个分支会被选择

foreach 标签:

循环数组或集合,动态生成SQL

批量删除:

fad6290118434ee49875520463214537.png

480095fc72674e368bd57268c2db7f97.png

第二种方式:

550b27a3a3c04060960f9d27041226ef.png

批量插入:

d5968f581e334ec1b303c36dc7ec94f1.png

Mybatis 分页插件

pageHelper ( limit 当前页码 一 1)* 每页显示记录条数 , 每页显示记录条数

#{} 和$ {} 的区别:

#{} :先编译sql 语句,再给占位符传参数,底层是prepareStatement 实现,可以防止sql 注入,比较常用。

${} : 先进行sql 语句拼接,然后再编译SQL语句,底层是statement ,存在SQL 注入现象。只有在需要SQL语句关键字拼接的情况下才会用到。

什么时候使用$ {} ??

21ecd1e69e64453bb186a50d0cf60791.png

拼接表名

9e6d33f5ad1f41ba8eb7e9aff97ab2a1.png

现实业务中,可能会出现分表存储数据的情况

Mybatis 参数处理

多参数:要使用@param 注解

ccb1408d564440eab6d151df21286023.png

大Map

7c38d8e5f7d34258bdf07f6c1a869e55.png

列名跟Java 对象的属性名对应不上怎么办?

1:使用as 起别名

2:使用resultMap 进行结果映射

3:是否开启驼峰命名自动映射(配置settings) mapUnderscoreToCamelCase

0933)]

大Map

77d06c161d18490f9a4a646b7057aa10.png

列名跟Java 对象的属性名对应不上怎么办?

1:使用as 起别名

2:使用resultMap 进行结果映射

3:是否开启驼峰命名自动映射(配置settings) mapUnderscoreToCamelCase


目录
相关文章
|
7月前
|
SQL 缓存 Java
框架源码私享笔记(02)Mybatis核心框架原理 | 一条SQL透析核心组件功能特性
本文详细解构了MyBatis的工作机制,包括解析配置、创建连接、执行SQL、结果封装和关闭连接等步骤。文章还介绍了MyBatis的五大核心功能特性:支持动态SQL、缓存机制(一级和二级缓存)、插件扩展、延迟加载和SQL注解,帮助读者深入了解其高效灵活的设计理念。
|
9月前
|
缓存 NoSQL Java
Mybatis学习:Mybatis缓存配置
MyBatis缓存配置包括一级缓存(事务级)、二级缓存(应用级)和三级缓存(如Redis,跨JVM)。一级缓存自动启用,二级缓存需在`mybatis-config.xml`中开启并配置映射文件或注解。集成Redis缓存时,需添加依赖、配置Redis参数并在映射文件中指定缓存类型。适用于查询为主的场景,减少增删改操作,适合单表操作且表间关联较少的业务。
164 6
|
Java 数据库连接 数据库
Mybatis逆向工程笔记小结
Mybatis逆向工程笔记小结
|
12月前
|
Java 关系型数据库 MySQL
springboot学习五:springboot整合Mybatis 连接 mysql数据库
这篇文章是关于如何使用Spring Boot整合MyBatis来连接MySQL数据库,并进行基本的增删改查操作的教程。
2341 0
springboot学习五:springboot整合Mybatis 连接 mysql数据库
|
Java 关系型数据库 数据库连接
mybatis-plus学习
MyBatis-Plus ,MyBatis 最佳搭档,只做增强不做改变,为简化开发、提高效率而生。
158 5
|
安全 Java 数据库连接
后端框架的学习----mybatis框架(3、配置解析)
这篇文章详细介绍了MyBatis框架的核心配置文件解析,包括环境配置、属性配置、类型别名设置、映射器注册以及SqlSessionFactory和SqlSession的生命周期和作用域管理。
后端框架的学习----mybatis框架(3、配置解析)
|
SQL Java 数据库连接
【Java笔记+踩坑】MyBatisPlus基础
MyBatisPlus简介、标准数据层开发CRUD、业务层继承IService、ServiceImpl、条件查询、LambdaQueryWrapper、id生成策略、逻辑删除、乐观锁@Version、代码生成器、ActiveRecord
【Java笔记+踩坑】MyBatisPlus基础
|
Java 数据库连接 数据格式
【Java笔记+踩坑】Spring基础2——IOC,DI注解开发、整合Mybatis,Junit
IOC/DI配置管理DruidDataSource和properties、核心容器的创建、获取bean的方式、spring注解开发、注解开发管理第三方bean、Spring整合Mybatis和Junit
【Java笔记+踩坑】Spring基础2——IOC,DI注解开发、整合Mybatis,Junit
|
Java 数据库连接 mybatis
后端框架的学习----mybatis框架(9、多对一处理和一对多处理)
这篇文章介绍了在MyBatis框架中如何处理多对一和一对多的关联查询,通过定义`<resultMap>`和使用`<association>`与`<collection>`元素来实现对象间的关联映射。
|
Java 数据库连接 测试技术
后端框架的学习----mybatis框架(8、lombok)
这篇文章介绍了如何在MyBatis框架中使用lombok库来简化Java实体类的编写,包括在IDEA中安装Lombok插件、在项目中导入lombok依赖以及在实体类上使用Lombok提供的注解。