主页 > 互联网  > 

MyBatis配置

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下的二级缓存。  

标签:

MyBatis配置由讯客互联互联网栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“MyBatis配置