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

MyBatis配置

三,配置属性文件

1.Mybatis可以将数据库配置单独放在一个properties文件中。如创建一个db.properties文件,内容如下:
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis
username=root
password=123
接下来再配置文件中,添加properties标签,使用属性resource引入属性文件。

在dataSourse标签中使用${}进行访问。

实体类定义别名
2.在编写SQL的时候常常需要使用到完成的JavaBean名称作
为SQL语句的数据类型,这时候可以使用typeAliases标签,
为实体类起别名,简化代码。
<typeAliases>
<typeAlias type=
"test3.Student" alias="_Student"/>
</typeAliases>
使用这个配置,_Student就能在任何地方替代
test3.Student使用,对于普通的Java类型,有许多内建的
类型别名。

四,使用LOG4J打印日志

3.想要明确的看到执行的SQL语句,可以添加log4j.jar,并且配置文件显示日志。

五,多表关联查询

1.一对一关联时,使用association标签
association元素用来处理“一对一”的关系。需要指定映射的Java实体类的属性,属性的javaType(通常MyBatis 自己会识别)。对应的数据库表的列名称。
2.一对多关联时,使用collection标签
collection元素用来处理“一对多”的关系。需要指定映射的Java实体类的属性,属性的javaType(一般为ArrayList)、表中对象的类型ofType(Java实体类)、对应的数据库表的列名称。

六,Mybatis缓存

什么是查询缓存
Mybatis的一级缓存是指SqlSession。一级缓存的作用域是一个SqlSession。
Mybatis默认开启一级缓存。
在同一个SqlSession中,执行相同的查询SQL,第一次会去查询数据库,并写到
缓存中;第二次直接从缓存中取。当执行SQL时两次查询中间发生了增删改操作,
则SqlSession的缓存清空。
Mybatis的二级缓存是指mapper映射文件。二级缓存的作用域是同一个namespace
下的mapper映射文件内容,多个SqlSession共享。Mybatis需要手动设置启动二
级缓存。
在同一个namespace下的mapper文件中,执行相同的查询SQL,第一次会去查询数
据库,并写到缓存中;第二次直接从缓存中取。当执行SQL时两次查询中间发生
了增删改操作,则二级缓存清空。

区别:

一级缓存和二级缓存是MyBatis中用于提高查询性能的两种缓存机制。它们之间的区别主要在于作用范围、生命周期和失效机制。

### 一级缓存

- **作用范围:** 一级缓存是SqlSession级别的缓存,即在同一个SqlSession中执行的查询会共享同一个缓存。
- **生命周期:** 一级缓存生命周期与SqlSession相同,当SqlSession关闭或提交时,一级缓存被清空。
- **失效机制:** 任何对数据库的修改操作(插入、更新、删除)都会导致一级缓存失效,需要重新查询获取最新数据。

### 二级缓存

- **作用范围:** 二级缓存是Mapper级别的缓存,不同的SqlSession可以共享同一个Mapper的二级缓存。
- **生命周期:** 二级缓存的生命周期与应用程序的整个生命周期相关,当整个应用关闭时,二级缓存才会被清空。
- **失效机制:** 与一级缓存不同,二级缓存的失效机制更加灵活,可以通过配置缓存刷新策略或手动刷新来控制缓存的更新。

### 总结知识点:

- **一级缓存**是SqlSession级别的缓存,生命周期短,作用范围有限;**二级缓存**是Mapper级别的缓存,生命周期长,可以跨SqlSession共享数据。
- 一级缓存适用于短暂的局部性查询,可以提高查询效率;二级缓存适用于全局性共享查询数据,可以减少数据库访问压力。
- 一级缓存的控制相对简单,失效机制固定;二级缓存的失效机制更加灵活,但需要慎重处理缓存同步的问题。

一级缓存原理示意图:

一级缓存区域是根据SqlSession为单位划分的。
每次查询会先去缓存中找,如果找不到,再去数据库查询,然后把结果写
到缓存中。Mybatis的内部缓存使用一个HashMap,key为
hashcode+statementId+sql语句。Value为查询出来的结果集映射成的
java对象。
SqlSession执行insert、update、delete等操作commit后会清空该
SQLSession缓存。
 

二级缓存原理示意图:

二级缓存是mapper级别的。Mybatis默认是没有开启二级缓存。
第一次调用mapper下的SQL去查询用户信息。查询到的信息会存到该mapper
对应的二级缓存区域内。
第二次调用相同namespace下的mapper映射文件中相同的SQL去查询用户信
息。会去对应的二级缓存内取结果。
如果调用相同namespace下的mapper映射文件中的增删改SQL,并执行了
commit操作。此时会清空该namespace下的二级缓存。
 

相关文章:

  • 面试基础--微服务架构:如何拆分微服务、数据一致性、服务调用
  • 网络安全-js安全知识点与XSS常用payloads
  • 树与并查集,区间dp,树形dp
  • 2025.2.23机器学习笔记:PINN文献阅读
  • 【react18】如何使用useReducer和useContext来实现一个todoList功能
  • 通过Selenium实现UI自动化校验输入的数据是否完整有效方式
  • Unity Mixamo模型更好的适配角色模型
  • 【Gin-Web】Bluebell社区项目梳理2:JWT-Token认证
  • 【深度学习】自然语言处理(NLP)-语音识别-WaveNet
  • 虚函数与多态
  • 蓝桥云客 路径之谜
  • 算法——Boyer-Moore算法
  • 网络安全知识--网络、网络安全产品及密码产品概述
  • 最新版免安装免费动图录制与编辑利器
  • 知识库技术栈
  • css特异性,继承性
  • round的意思
  • Windows 图形显示驱动开发-查询 WDDM(3.2) 功能支持和启用
  • Maven导入hutool依赖报错-java: 无法访问cn.hutool.core.io.IORuntimeException 解决办法
  • QML ToolButton与DelayButton的使用、详解与自定义样式
  • 政府采购网官网/海东地区谷歌seo网络优化
  • 网站在美国做的服务器/如何进行推广
  • 企业网站建设的基本原则/排名前50名免费的网站
  • 镇江做网站的/杭州seo排名费用
  • 网站建设具体流程图/哈尔滨新闻头条今日新闻
  • 自做网站多少钱/东营seo