- mapper 代理流程:
- 1、创建对应的Mapper接口,和xml文件名一致(同包同名)
- 2、编写对应的xxmapper.xml配置文件。有要求
- mapper标签里面的namespace:必须写成对应的Mapper接口的路径名
- sql语句里面的id:必须和接口中对应方法的名称一致。
- sql语句里面的parameterType:必须要和接口中方法的形式参数数据类型一致
- sql语句里面的resultType:必须和接口中方法的返回值数据类型一致
- 3、将编写好的**mapper.xml文件在SqlMapConfig.xml文件中加载
- 4、编写实现类
- xxMapper mapper = session.getMapper(xxMapper.class);
- 缓存:
- 一级缓存:
- 1、自动的缓存 (无法关闭);sqlSession级别的缓存,相互独立;map结构存储,
- 2、查询流程:查询语句前,先到一级缓存找相同查询语句,如果有直接拿结果, 否则重新执行语句,结果存在一级缓存;对数据库进行更改时,会清空一级缓存,解决脏读。session.close(); 一级缓存清空
- 3、缓存机制:第一次发出一个查询 sql,sql 查询结果写入 sqlsession 的一级缓存中,缓存使用的数据结构是一 个 map。同一个 sqlsession 再次发出相同的 sql,就从缓存中取出数据。如果两次中间出现 commit 操作(修改、添加、删除),本 sqlsession 中的一级缓存区域全部清空,下次再去缓存中查询不到所以要从数据库查询,从数据库查询到再写入缓存。
- 二级缓存:(查询大量数据且不轻易更改时使用)
- 1、需要手动开启;mapper映射级别的缓存;序列化存储,二进制形式存在文件里
- 2、开启步骤:
- 1、启动缓存,Mybatis框架支持二级缓存(在sqlMapConfig.xml中配置,全局配置)<setting name="cacheEnabled" value="true"/>
- 2、指定的xml文件开启cache(在xxMapper.xml中配置)<cache/>
- 3、指定的sql语句支持二级缓存(在select标签中配置)useCache="true"
- 3、缓存机制:查询语句前,先到一级缓存找相同查询语句,再到二级存储查找,如果有直接拿结果,否则重新执行语句,结果存在一级、二级缓存;对数据库进行更改时,会清空一级缓存,解决脏读。
- 一级缓存:
mybatis mapper 代理,缓存
于 2021-11-16 22:22:51 首次发布