
mybatis
smileChenjx
这个作者很懒,什么都没留下…
展开
-
自己手写一个Mybatis框架
继上一篇手写SpringMVC之后,我最近趁热打铁,研究了一下Mybatis。MyBatis框架的核心功能其实不难,无非就是动态代理和jdbc的操作,难的是写出来可扩展,高内聚,低耦合的规范的代码。本文完成的Mybatis功能比较简单,代码还有许多需要改进的地方,大家可以结合Mybatis源码去动手完善。一、Mybatis框架流程简介在手写自己的Mybatis框架之前,我们先...原创 2019-02-14 16:02:44 · 311 阅读 · 0 评论 -
Mybatis一级缓存与二级缓存
一、MyBatis缓存介绍 正如大多数持久层框架一样,MyBatis 同样提供了一级缓存和二级缓存的支持一级缓存: 基于PerpetualCache 的 HashMap本地缓存,其存储作用域为 Session,当 Session flush 或 close 之后,该Session中的所有 Cache 就将清空。 2. 二级缓存与一级缓存其机制相同,默认也是采用 PerpetualCa...原创 2019-02-15 10:40:20 · 120 阅读 · 0 评论 -
原 MyBatis源码阅读——装饰器模式在MyBatis中的应用
Executor首先我们看下Executor,打开MyBatis的源码org.apache.ibatis.session.Configuration public Executor newExecutor(Transaction transaction, ExecutorType executorType) { executorType = executorType == nul...原创 2019-02-15 14:17:27 · 282 阅读 · 0 评论 -
MyBatis源码阅读—解析MyBatis运行流程
前言最近在阅读MyBatis框架的源码。发现它其实是一个非常值得阅读的框架。它灵活得运用了常见的设计模式去设计。值得我们去学习。我还是比较喜欢以debug阅读MyBatis的源码。下面,就一起来看看吧。首先,我们先写一个demo,以供调试使用public class Demo1SessionFactory {public static void main(String[] args) th...原创 2019-02-13 11:03:35 · 155 阅读 · 1 评论 -
MyBATIS原理第三篇: SqlSession下的四大对象之一——执行器(executor)
首先我先解释一下标题 四大对象是指:executor, statementHandler,parameterHandler,resultHandler对象。(为了方便下面的文章说道四大对象就专指它们)它们都是sqlSession的底层类实现,也是插件能够拦截的四大对象。所以这里已经触及了MyBATIS的底层,动态代理,反射随时可以看到,如果没有第一篇作为基础,你将十分难以理解它。了解他们的协作...原创 2019-02-13 14:40:42 · 270 阅读 · 0 评论 -
MyBATIS插件原理第一篇——技术基础(反射和JDK动态代理)
在介绍MyBATIS插件原理前我们需要先学习一下一些基础的知识,否则我们是很难理解MyBATIS的运行原理和插件原理的。MyBATIS最主要的是反射和动态代理技术,让我们首先先熟悉它们。1:Java反射技术在Java中反射技术已经大行其道,通过不断的优化性能得到了巨大的提高,而反射技术使得Java的可配置性大大提高。让我们来写一个服务打印hello + 姓名。 import ...原创 2019-02-13 14:47:32 · 271 阅读 · 0 评论 -
MyBATIS插件原理第二篇 Mapper运行原理
我们目前在MyBATIS中,我们知道MyBATIS的Mapper是一个接口,而不是一个实体类。在Java中接口是没有办法运行的。那么它是怎么运行的呢?有了第一篇的基础,我们可以大胆的想象——它是通过动态代理运行,没有错真实的情况就是这样的。让我们看看mybatis是怎么实现这个动态代理的: /** * Copyright 2009-2015 the origina...原创 2019-02-13 14:55:05 · 245 阅读 · 0 评论 -
MyBatis架构图
原创 2019-02-13 15:02:01 · 669 阅读 · 0 评论 -
MyBatis原理第四篇——statementHandler对象(sqlSession内部核心实现,插件的基础)
首先约定文中将的四大对象是指:executor, statementHandler,parameterHandler,resultHandler对象。(为了方便下面的文章说道四大对象就专指它们)讲到statementHandler,毫无疑问它是我们四大对象最重要的一个,它的任务就是和数据库对话。在它这里会使用parameterHandler和ResultHandler对象为我们绑定SQL参数和...原创 2019-02-13 15:08:32 · 218 阅读 · 0 评论