第九节Mybatis和MybatisPlus专题

亮子 2022-08-27 04:09:30 11617 0 0 0

M1、Mybatis的一级缓存和二级缓存有什么区别,怎么开启?

(1)区别

  • 一级缓存是SqlSession级别的缓存。在操作数据库时需要构造SqlSession对象,在对象中有一个数据结构(HashMap)用于存储缓存数据。不同的SqlSession之间的缓存数据区域(HashMap)是互不影响的。
  • MyBatis的二级缓存是Application级别的缓存,它可以提高对数据库查询的效率,以提高应用的性能。
  • Mybatis中,一级缓存默认是开启的。而二级缓存需要手动开启。

(2)开启

  • 开启一级缓存

默认开启,无需特殊处理

  • 开启二级缓存

在yml中添加以下代码:

mybatis:
  configuration:
    cache-enabled: true

在需要开启的mapper.xml中,添加以下代码(在下方)

<!-- 开启本mapper所在namespace的二级缓存 -->
<cache eviction="FIFO" flushInterval="60000" size="512" readOnly="true"/>

M2、#{} 和 ${} 的区别是什么?

两者在 MyBatis 中都可以作为 SQL 的参数占位符,在处理方式上不同

  • #{}:在解析 SQL 的时候会将其替换成 ? 占位符,然后通过 JDBC 的 PreparedStatement 对象添加参数值,这里会进行预编译处理,可以有效地防止 SQL 注入,提高系统的安全性
  • ${}:在 MyBatis 中带有该占位符的 SQL 片段会被解析成动态 SQL 语句,根据入参直接替换掉这个值,然后执行数据库相关操作,存在 SQL注入 的安全性问题

M3、MyBatis的动态标签有哪些?

1.if
2.choose、when、otherwise
3.where
4.set
5.trim
6.foreach
7.bind