第八章 Mybatis及MybatisPlus

简介: dada

1、系统架构流程

2、结果集映射
在 MyBatis 中,结果集映射是指将查询数据库得到的结果集映射到 Java 对象的过程。MyBatis 提供了 XML 配置和注解两种方式来进行结果集映射。
1)使用xml的方式;则可以使用 resultType 或 resultMap ;其中 resultType可以直接指定类名即可。而 resultMap可以映射更加复杂的映射关系;包括 一对一(可以使用 association )、一对多(可以使用 collection )等复杂的关联关系。
2)使用注解的方式;可以使用 @Select、 @Result 配合使用。
3、mapper传参
在 MyBatis 中,Mapper 接口中定义的方法可以接受参数来进行数据库操作。Mapper 方法可以接受多种类型的参数,包括基本数据类型、Java 对象、Map 等。
1、在mapper接口中的方法形参前面使用 @Param 指定名称;然后在映射文件或者@Select 注解内直接使用 #{} 或者 ${} 获取;
2、不使用 @Param ;那么直接在需要使用的sql语句中,参数的名称要写成 param1,param2。。。
3、如果传递的是一个对象或者map类型;那么在sql也可以直接使用对象或map的属性或key名称
4、xml常用配置
MyBatis 的 XML 配置文件中包含了许多常用的配置项,这些配置项可以帮助你定义映射关系、SQL 查询、参数传递等。以下是一些 MyBatis XML 配置中常用的配置:
1)数据源配置:配置连接数据库的信息,包括驱动类、URL、用户名和密码等。
2)映射器配置:指定映射器文件或映射器接口的位置。
3)类型别名配置:为 Java 类型指定别名,简化映射器文件中的使用。
4)结果映射配置:定义 SQL 查询结果与 Java 对象之间的映射关系。
5)SQL 查询配置:编写 SQL 查询语句,并指定参数类型、返回结果类型等。
6)参数传递配置:定义方法参数传递方式,可以使用基本类型、Java 对象、Map 等作为参数。
5、缓存机制
MyBatis 提供了两级缓存(Local Cache 和 Second Level Cache)来满足不同的需求。
1、Local Cache(本地缓存、一级缓存):
Local Cache 是指在 SqlSession 范围内的缓存,它默认开启并且无法关闭。
在同一个 SqlSession 中,当执行相同的查询语句(包括参数相同)时,如果之前已经查询过相同的结果,那么会直接从本地缓存中获取数据,而不会再发送 SQL 查询到数据库。
Local Cache 是基于 HashMap 实现的,它仅在当前 SqlSession 中有效,并且对于不同的 SqlSession 是隔离的。
2、Second Level Cache(二级缓存):
Second Level Cache 是指在 Mapper 范围内的缓存,它可以跨 SqlSession 共享数据。
如果开发者需要使用 Second Level Cache,需要在映射文件中进行配置。
当开启了 Second Level Cache 后,同一个 namespace 下的查询结果会被缓存起来,其他 SqlSession 也可以共享这部分数据,从而减少数据库查询次数。
Second Level Cache 默认是关闭的,需要手动在映射文件中配置开启。
6、分页插件
MyBatis 中常见的分页插件有: PageHelper 和 MyBatis Plus 都是用于简化分页查询操作的工具,它们能够大大简化分页查询的代码编写,并提供了丰富的分页功能。两类插件都是基于Mybatis的拦截器实现;所以需要在使用之前添加对应的拦截器。而在使用的时候:
PageHelper中使用的参考: `

Plain Text

复制代码

1

PageHelper.startPage(页号, 页大小);

MybatisPlus中的使用参考:

Plain Text

复制代码

1

IPage<User> userPage = userService.page(new Page<>(页号, 页大小));

7、Mybatis-Plus常用API
MyBatis Plus 是在 MyBatis 的基础上进行增强的工具,提供了丰富的 API 来简化数据访问层的开发。常见的api有如下图:

MSELECTMAPS(WRAPPER<T>):LIST<MAP<STRING,OBJECT>>

MSELECTBYMAP(MAP<STRING,OBJECT>):LIST<T>

MSELECTOBJS(WRAPPER<T>):LIST<OBJECT>

MSELECTBATCHLDS(COLLECTION<?EXTENDSSERIALIZABLE>):LIST<T>

MSELECTPAGE(P,WRAPPER<T>):P

DELETEBATCHLDS(COLLECTION<?>):INT

MSELECTMAPSPAGE(P,WRAPPER<T>):P

DELETEBYMAP(MAP<STRING,OBJECT>):INT

MSELECTLIST(WRAPPER<T>):LIST<T>

DELETEBYLD(SERIALIZABLE):INT

EXISTS(WRAPPER<T>):BOOLEAN

SELECTONEWRAPPERT>)T

复尕WHERE条件的查询

UPDATE(T,WRAPPER<T>):INT

尕HHERE条件的更新

MSELECTCOUNT(WRAPPER<T>:LONG

MSELECTBYLD(SERIALIZABLE):T

UPDATEBYLD(T):INT

DELETE(WRAPPER<T>):INT

INSERT(T:INT

复杂HERE条件的删除

DELETEBYLD(T):INT

BASEMAPPE

西

向2

MDELE

@

.一

MSELECTO

M

M

MSPLEC



相关文章
|
7天前
|
Java Go 开发者
IDEA开发常用的快捷键
IntelliJ IDEA常用快捷键汇总:涵盖代码生成(如main、sout)、编辑(复制、删除、重命名)、导航(跳转、查找)、格式化、代码阅读及版本控制等高频操作,提升开发效率。熟练掌握可显著优化编码体验,是Java开发者必备技能。
136 1
|
7天前
|
Oracle Java 关系型数据库
Java命名规范
Java命名规范涵盖包、类、方法、变量等命名规则。包名全小写,类名首字母大写采用驼峰法,接口常用形容词,抽象类以Abstract/Base开头,异常类以Exception结尾,方法名小写驼峰,常量全大写用下划线分隔,枚举值按常量规范命名,提升代码可读性与一致性。
104 0
|
7天前
经典题:求一个数是否为质数
介绍质数判断与自幂数概念:质数为仅被1和自身整除的大于1的自然数;自幂数是n位数等于各位数字n次幂之和,如水仙花数(三位)、四叶玫瑰数(四位)等,体现数字的独特数学之美。(239字)
48 1
|
7天前
|
Java
经典题:贪吃蛇
一款基于Java Swing实现的贪吃蛇小游戏,通过方向键控制蛇移动,吃食物成长,撞墙或撞自身则游戏重置。代码结构清晰,适合学习GUI编程与游戏逻辑设计。
47 0
|
10天前
|
存储 安全 编译器
C++数据类型:
C++基本数据类型包括bool、char、int、float、double等,支持signed、unsigned、short、long修饰。wchar_t用于宽字符,typedef可为类型定义别名,enum定义枚举常量。支持static_cast、dynamic_cast、const_cast和reinterpret_cast四种类型转换,实现安全或强制类型变换。
52 1
|
10天前
|
负载均衡 Dubbo 应用服务中间件
|
10天前
|
Java 开发工具 数据安全/隐私保护
|
10天前
|
监控 NoSQL 数据可视化
|
10天前
|
SQL 前端开发 Java
|
7天前
|
Java
判断和循环
本节介绍Java中判断与循环结构,包括if语句的两种格式、switch语句及其JDK12新特性,以及for循环的基本语法。涵盖键盘录入、条件判断、case穿透、break与default使用等核心知识点,帮助掌握程序流程控制。
42 0

热门文章

最新文章