Mybatis及MybatisPlus

简介: MyBatis简介:基于XML或注解配置,实现SQL映射与结果集自动封装。通过SqlSessionFactory创建会话,Executor执行SQL,Mapped Statement管理参数与结果映射。支持resultType/resultMap处理复杂关联关系,提供一级缓存(SqlSession级)和二级缓存(Mapper级),结合PageHelper或MyBatis Plus实现分页,简化数据库操作。

image.png
image.png
1、系统架构流程
执行过程:
mybatis配置
mybatis-config.xml,名称可变,此文件作为mybatis的全局配置文件,配置了mybatis的运行环境等信息。mapper.xml文件即sql映射文件,文件中配置了操作数据库的sql语句。此文件需要在mybatis-config.xml中加载;
通过mybatis环境等配置信息构造SqlSessionFactory即会话工厂;
由会话工厂创建sqlSession即会话,操作数据库需要通过sqlSession进行;
mybatis底层自定义了Executor执行器接口操作数据库,Executor接口有两个实现,一个是基本执行器、一个是缓存执行器;
Mapped Statement也是mybatis一个底层封装对象,它包装了mybatis配置信息及sql映射信息等。mapper.xml文件中一个sql对应一个Mapped Statement对象,sql的id即是Mapped statement的id;
Mapped Statement对sql执行输入参数进行定义,包括HashMap、基本类型、pojo,Executor通过 Mapped Statement在执行sql前将输入的java对象映射至sql中,输入参数映射就是jdbc编程中对preparedStatement设置参数;
Mapped Statement对sql执行输出结果进行定义,包括HashMap、基本类型、pojo,Executor通过 Mapped Statement在执行sql后将输出结果映射至java对象中,输出结果映射过程相当于jdbc编程中对结果的解析处理过程。
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 userPage = userService.page(new Page<>(页号, 页大小));

相关文章
|
2天前
|
数据采集 人工智能 安全
|
11天前
|
云安全 监控 安全
|
3天前
|
自然语言处理 API
万相 Wan2.6 全新升级发布!人人都能当导演的时代来了
通义万相2.6全新升级,支持文生图、图生视频、文生视频,打造电影级创作体验。智能分镜、角色扮演、音画同步,让创意一键成片,大众也能轻松制作高质量短视频。
1000 151
|
3天前
|
编解码 人工智能 机器人
通义万相2.6,模型使用指南
智能分镜 | 多镜头叙事 | 支持15秒视频生成 | 高品质声音生成 | 多人稳定对话
|
16天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
1697 9
|
8天前
|
人工智能 自然语言处理 API
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸
一句话生成拓扑图!next-ai-draw-io 结合 AI 与 Draw.io,通过自然语言秒出架构图,支持私有部署、免费大模型接口,彻底解放生产力,绘图效率直接爆炸。
642 152
|
10天前
|
人工智能 安全 前端开发
AgentScope Java v1.0 发布,让 Java 开发者轻松构建企业级 Agentic 应用
AgentScope 重磅发布 Java 版本,拥抱企业开发主流技术栈。
611 14
|
9天前
|
人工智能 自然语言处理 API
Next AI Draw.io:当AI遇见Draw.io图表绘制
Next AI Draw.io 是一款融合AI与图表绘制的开源工具,基于Next.js实现,支持自然语言生成架构图、流程图等专业图表。集成多款主流大模型,提供智能绘图、图像识别优化、版本管理等功能,部署简单,安全可控,助力技术文档与系统设计高效创作。
687 151