mybatis的一级缓存和二级缓存怎么区分 举个例子说明?
时间: 2024-06-20 21:03:09 浏览: 77
mybatis一级缓存和二级缓存简单示例
Mybatis是一款优秀的ORM框架,在进行数据操作时,为了提高数据访问的效率,它提供了缓存机制,缓存分为一级缓存和二级缓存。
一级缓存是指在同一个SqlSession中,对于同一条SQL语句,第一次执行查询操作时,会将查询到的结果存储在缓存中,之后再执行相同的查询操作时,直接从缓存中获取结果,而不需要再次向数据库发起查询请求。一级缓存默认是开启的,并且无法关闭。
二级缓存是指在不同的SqlSession之间共享缓存,在同一个namespace下的所有SqlSession共享相同的二级缓存。当SqlSession执行查询操作时,如果开启了二级缓存,则会先从二级缓存中获取结果,如果没有找到,则再向数据库发起查询请求,并将查询到的结果存储在二级缓存中。当其他SqlSession执行相同的查询操作时,会先从二级缓存中获取结果,如果找到则直接返回结果,否则再向数据库发起查询请求。二级缓存默认是关闭的,需要在mybatis配置文件中进行配置。
举个例子说明:假设有一个User表,其中有两条数据id为1和2,现在我们要查询id为1的用户信息。
1. 第一次查询时,Mybatis会向数据库发起查询请求,并将查询到的结果存储在一级缓存中和二级缓存中(如果开启了二级缓存);
2. 第二次查询时,在同一个SqlSession中,由于之前已经查询过了id为1的用户信息,因此会直接从一级缓存中获取结果;
3. 第三次查询时,在另一个新的SqlSession中,如果开启了二级缓存,则会先从二级缓存中获取结果,如果没有找到则再向数据库发起查询请求。
阅读全文