
Mybatis源码解析
Mybatis源码解析,围绕mybatis的源码展开分析
wuhulala
这个作者很懒,什么都没留下…
展开
-
Mybatis 源码解析(七) Mybatis二级缓存
mybatis 二级缓存MyBatis 内置了一个强大的事务性查询缓存机制,它可以非常方便地配置和定制。默认情况下,Mybatis只启用了本地的会话缓存,它仅仅对一个会话中(SqlSession)的数据进行缓存。如果要启用全局的二级缓存(Mapper namespace级别的),只需要在Mapper.xml文件中添加一行:<cache/>基本上就是这样。这个简单语句的效果如...原创 2019-11-24 21:33:02 · 216 阅读 · 0 评论 -
Mybatis 源码解析(六) Mybatis方言支持
背景现实中,我们经常会遇到使用oracle、mysql的客户,那么我们一般就需要工程同时支持这两种数据库。所以我们需要mybatis对方言进行支持,可以根据不同的数据源执行不同的sql语句。实现MyBatis 可以根据不同的数据库厂商执行不同的语句,这种多厂商的支持是基于映射语句中的 databaseId 属性。比如<select id="selectByExample" dat...原创 2019-11-18 22:50:24 · 8329 阅读 · 0 评论 -
Mybatis 源码解析(五) 从SELETE语句理解Mybatis执行全流程
背景对于我们经常写的SQL代码,我们经常会写到select * from tb_user不知道大家还记不记得使用jdbc接口时候的场景。public static void main(String[] args) { String driver = "com.mysql.jdbc.Driver"; String url = "jdbc:mysql://19...原创 2019-11-17 21:58:53 · 388 阅读 · 0 评论 -
Mybatis 源码解析(四) Mybatis 拦截器实现与解析
首先从代码包里面看到有一个org.apache.ibatis.plugins的包,猜想就是这里可以进行扩展了,可以看到刚好有Interceptor这个扩展点,那就先从Interceptor入手。无论实在JavaWeb当中的Filter,还是在Spring里面的HandlerInterceptor都可以或多或少的知道这个责任链模式,如果没有相关知识储备的,请自行查阅。我们在这里可以看到有一个I...原创 2019-11-17 15:23:30 · 323 阅读 · 0 评论 -
Mybatis 源码解析(三) Mybatis 一级缓存(本地缓存)
文章目录一级缓存缓存实现缓存作用域sessionstatement缓存key生成策略添加缓存清空缓存例子解析总结一级缓存官方解释:MyBatis uses local cache to prevent circular references and speed up repeated nested queries. MyBatis使用本地缓存来防止循环引用并加速重复的嵌套查询。这个缓存...原创 2019-05-01 17:43:25 · 490 阅读 · 0 评论 -
Mybatis 源码解析(二) DefaultSqlSession 为什么不是线程安全的
DefaultSqlSession 真正的执行代码是由 BaseExecutor 进行执行的,而BaseExecutor中的代码如下:定义一个localCache字段,其实底层就是一个HashMap。 protected PerpetualCache localCache;public class PerpetualCache implements Cache { private ...原创 2019-04-28 23:34:35 · 2744 阅读 · 1 评论 -
Mybatis源码解析(一) SqlSessionFactory 初始化
每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先定制的 Configuration 的实例构建出 SqlSessionFactory 的实例。原创 2019-04-27 23:09:05 · 1663 阅读 · 2 评论