![](https://img-blog.csdnimg.cn/20210223221846598.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Mybatis
文章平均质量分 91
本专栏从讨论使用原始JDBC存在的弊端到Mybatis核心类的源码分析、缓存设计等的讨论
KiminaPera
不为BUG找借口,只为成功找方法。
展开
-
Mybatis源码解析--TypeHandler
Mybatis源码解析–TypeHandler背景Mybatis作为开源的持久层框架,极大的简化了使用JDBC操作数据库的繁琐流程,作为JAVA与数据库之间的桥梁,会存在数据类型转化的问题。我们都知道在java语法中定义了一套数据类型例如String、Integer、Double等,而在数据库中也有自己的一套数据类型VARCHAR、CHAR、INT等。这篇就来探索一下Mybatis是如何解决这一问题的。提供的功能Mybatis定义了一个TypeHandler接口,主要负责在添加或更新操作时将JAVA原创 2021-02-26 11:01:14 · 235 阅读 · 0 评论 -
Mybatis源码解析--ResultHandler
Mybatis源码解析--ResultHandler背景在Mybatis源码解析--ResultsetHandler中我们知道ResultsetHandler是对JDBC中Statement结果集的处理。而StatementHandler将Statement的参数设置和结果集的解析逻辑分别交给ParameterHandler和ResultSetHandler进行处理,本篇就来研究ResultsetHandler的内部实现。ResultHandler的创建public ResultSetHa原创 2021-02-23 22:08:51 · 600 阅读 · 0 评论 -
Mybatis源码解析--ParameterHandler
Mybatis源码解析--ParameterHandler背景在Mybatis源码解析--StatementHandler中我们知道StatementHandler是对JDBC中Statement功能的封装,而针对3种Statement提供了对应的StatementHandler,而StatementHandler将Statement的参数设置和结果集的解析逻辑分别交给ParameterHandler和ResultSetHandler进行处理,本篇就来研究ParameterHandler的内部实现。原创 2021-02-23 22:08:04 · 824 阅读 · 1 评论 -
Mybatis源码解析--StatementHandler
Mybatis源码解析--StatementHandler背景概述StatementHandler的分类 RoutingStatementHandler:更具不同的StatementType创建对应的StatementHandler(装饰者模式) BaseStatementHandler:对公用逻辑的抽取 SimpleStatementHandler:用来处理Statement PreparedStatementHandler:用来处理Prepare.原创 2021-02-23 22:07:34 · 211 阅读 · 0 评论 -
Mybatis源码解析--缓存
Mybatis源码解析--缓存背景Mybatis作为一个持久层框架,极大的简化了使用JDBC对数据库操作的繁琐流程,只需定义接口编写SQL模板即可操作数据库,消除了手动获取连接、创建Statement、设置参数、解析结果集等。Mybatis除了对数据库操作进行简化之外,还在性能上做了优化,提供了缓存。开始之前,先思考下面这个场景:一般用户会向应用发起一个请求,通过应用处理之后会响应一个预期结果给用户。设想一下由于业务比较复杂,可能这次请求需要对数据库访问十几次才能获取完本次业务处理所需数据,而一原创 2021-02-23 22:05:39 · 255 阅读 · 2 评论 -
Mybatis源码分析--Plugin(插件原理)
Mybatis源码分析--PluginMybatis插件介绍支持拦截的方法 Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed) ParameterHandler (getParameterObject, setParameters) ResultSetHandler (handleResultSets, handleOutputParamet原创 2021-02-23 22:04:07 · 437 阅读 · 0 评论 -
Mybatis源码解析--Mapper代理对象
Mybatis源码解析--Mapper代理对象背景我们在分析Mybatis源码解析--SqlSession的Mapper代理方式执行sql只是简单的一笔带过,考虑到篇幅过长问题,所以在这篇我们单独分析。Mapper的获取在Mybatis源码解析--SqlSession中已经分析过,通过SqlSession的getMapper(Class<T> type)获取指定类的Mapper对象,而且SqlSession是个接口,真正返回的是DefaultSqlSession对象。Defa原创 2021-02-23 22:02:10 · 682 阅读 · 0 评论 -
Mybatis源码解析--SqlSession
Mybatis源码解析--SqlSessionSqlSession介绍Mybatis框架的主要目的就是简化JDBC操作数据库的繁琐流程,只需要提供sql语句和相关参数即可,不用再对参数手动设置,以及遍历结果集将其手动封装成目标对象,不用担心资源的释放等等。而SqlSession这个类就是Mybatis的核心,对外暴露的所有接口都在里面,只需要了解该类的方法就可以对数据库进行操作。SqlSession相关类介绍构建SqlSessionFactory我们模拟官网的示例写一个demoSt原创 2021-02-23 22:01:11 · 779 阅读 · 0 评论 -
Mybatis源码分析--初相识
Mybatis源码分析--初相识Mybatis版本:3.5.6本人的GitHub地址:https://github.com/KeminaPera/mybatis-3分支名称:study/mybatis-3.5.6个人建议:将Mybatis的源码fork到个人仓库,按照官网文档编写demo,然后调试跟踪包结构包名称 package-info.java内容 描述 annotations The MyBatis data mapper framework ma原创 2021-02-23 21:59:59 · 233 阅读 · 1 评论