- 博客(5)
- 收藏
- 关注
原创 Mybatis源码(5)-缓存
一、介绍对DB的访问相对于对内存的访问耗时明显,缓存作为优化系统性能的常用手段,Mybatis也引入的缓存以减少对DB的重复访问。Mybatis内部支持一级缓存(SqlSession级别)和二级缓存(Application级别),下面将详细介绍这两种缓存。二、一级缓存一级缓存是SqlSession级别的缓存,SqlSession是使用Mybatis时主要的类,内部提供了执行sql、获取mapper、管理事务的方法。一级缓存由BaseExecutor.localCache维护,...
2022-01-01 21:53:17
646
原创 Mybatis源码(3)-查询执行流程
上文介绍了mapper的创建过程,mybatis通过动态代理的方式生成了代理,MapperProxy实现了InvocationHandler类。下文以查询流程为例,分析sql的执行过程。MapperProxy: @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { try { if (Object.class.equals(method.g
2021-10-23 17:19:03
1271
原创 Mybatis源码(2)-mapper创建过程
问题:项目中一般会声明Mapper接口,接口包含了访问db的相关方法,然后在对应的xml文件中配置和接口暴露方法相对应的sql,我们没有实现Mapper接口,为什么可以通过如下代码进行访问数据库的操作? public void testGetUserByUserName() throws IOException { InputStream inputStream = Resources.getResourceAsStream("config/mybatis/mybatis-con
2021-09-27 17:46:19
318
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人