MyBatis+SpringMVC+SpringBootJavaspring+springmvc+mybatis(SSM)

面试官:精通 Mybatis?请回答下这几个问题

2019-06-14  本文已影响24人  Java_苏先生

点关注,不迷路;持续更新Java架构相关技术及资讯热文!!!

Mybatis是现在非常主流的持久层框架,虽然平时用的多,但是其中几个细节的问题,能说出个所以然来不?

一、最常见,参数中 #{} 和 ${} 有什么区别?

1、要点:

2、详情:

二、请解释下 Mybatis 的缓存机制?

缓存是一个持久层框架非常重要的一个功能,她可以减轻数据库访问的压力,提高应用的性能。Mybatis 的缓存分为两级:一级缓存和二级缓存。

1、一级缓存

Mybatis 的一级缓存是SqlSession级别的缓存,默认开启。她是基于 PerpetualCache 的 HashMap 本地缓存,其存储作用域为 Session。

在操作数据库的时候需要先创建SqlSession会话对象,在对象中有一个HashMap用于存储缓存数据,此HashMap是当前会话对象私有的,别的SqlSession会话对象无法访问。当 Session flush 或 close 之后,该Session中的所有缓存就会被清空。

缓存过程:

2、二级缓存

Mybatis 的二级缓存是 Mapper 级别的缓存,默认不开启,需手工配置。其存储作用域为 Mapper,也就是同一个 namespace 的 mappe.xml。

二级与一级缓存其机制相同,默认也是采用 PerpetualCache,HashMap存储,不同在于其存储作用域为 Mapper(Namespace),并且可自定义存储源,如 Ehcache、Hazelcast等。当多个SqlSession使用同一个Mapper操作数据库的时候,得到的数据会缓存在同一个二级缓存区域。

缓存流程:

3、缓存注意事项

好了,时间关系,今天先记录着两个常见问题吧。上面的两个 Mybatis 的问题你都清楚了吗。

上一篇下一篇

猜你喜欢

热点阅读