Mybatis源码分析
讲述mybatis架构以及对源码进行分析,了解mybatis底层知识
叶长风
会scala和python的程序员
展开
-
MyBatis源码分析之Script用法详解
MyBatis源码分析之在上一篇文章中讲到MyBatis的#{paras}和${paras}用法,在里面提到在解析sql组装成SqlSource对象时,会判断当前sql是否是动态类型,然后里面有一个对sql中是否含有**1. 与之前相同,讲到这里还是先讲一下@ResultMap("BaseResultMap")@Select("<script>&quo原创 2019-01-22 08:14:49 · 13370 阅读 · 0 评论 -
MyBatis源码分析之防SQL注入
MyBatis源码分析之防SQL注入这一节来讲下MyBatis的防SQL注入,SQL注入大多数也会比较清楚,就是SQL参数对应的字段值时插入混合SQL,如 ** username = or 1= 1** 这种,如果有更恶劣的,带上drop database 这种都是有可能的,所以一般SQL都会进行一定防注入处理,MyBatis其实用法大都清楚,就是**#{paras}和${paras}**两种用...原创 2019-01-18 08:21:46 · 1503 阅读 · 2 评论 -
MyBatis源码分析之@SelectProvider注解使用详解
MyBatis源码分析之@SelectProvider注解使用详解之前讲了MyBatis的配置、plugin、Select查询,还有@MapKey注解的使用与原理,还有返回@ResultMap等等,我原想直接从MyBatis的缓存开始说起,但是想想还是得说一下MyBatis中的@selectProvider,这个注解我也是在用了好久的MyBatis才用到,功能就是用来单独写一个class类与方法...原创 2019-01-11 08:31:57 · 13432 阅读 · 0 评论 -
MyBatis源码分析之@ResultMap注解详解
MyBatis源码分析之@ResultMap注解详解在前一篇文章讲**@MapKey注解时,我原想将@ResultMap注解也一起拿出来说一下,但是发现@ResultMap解析加载源码非常多,想想就不在一篇文章中讲了,分开单独来说,这一篇就来彻底探索一下@ResultMap**注解。1. 加载过程说到解析Mapper方法上的注解**@ResultMap**,这个就要回到解析configur...原创 2019-01-10 08:19:22 · 12250 阅读 · 1 评论 -
MyBatis中@MapKey使用详解
MyBatis中@MapKey使用详解我们在上一篇文章中讲到在Select返回类型中是返回Map时,是对方法中是否存在注解@MapKey,这个注解我也是第一次看到,当时我也以为是纯粹的返回单个数据对象的Map类型,但是发现还是有些不同的,这个可以用来返回多条记录,具体用法与分析如下。@MapKey用法我查了一下MapKey的用法,这里加上MapKey注解后,还有指定一个字段作为返回Map中...原创 2019-01-08 08:18:23 · 77136 阅读 · 15 评论 -
Mybatis源码分析之Select返回数据分析
Mybatis源码分析之Select返回数据分析在之前的一篇文章中分析了@Select注解的使用方法,在查询方法中我们知可以返回Map类型,也可以返回指针,或者是list集合,或是单条记录,今天就对这几种返回做一个源码分析。Select查询在这里就不需要再写一个demo演示了,用法无非这么多,直接看查询的源码吧。首先在看对应select的查询源码时先看下MyBatis是怎么定义metho...原创 2019-01-07 08:06:48 · 2012 阅读 · 1 评论 -
MyBatis plugin的使用与源码解析
MyBatis plugin的使用与源码解析这一节来讲下Mybatis中的plugin的使用,plugin作为对执行期间对Executor、StatementHandler的一种增强等等,我见过用的最多的应该就是Mybatis的分页插件PageHelper,PageHelper因为简单易用被广泛用于各种大小工程中,虽说PageHelper使用起来确实挺舒服,但是在遇到一些查询性能上的问题时,Pa...原创 2019-01-05 08:59:55 · 864 阅读 · 0 评论 -
MyBatis注解@Select、@Update分析
MyBatis注解@Select、@Update分析前面几篇文章分别分析了Mybatis中的Configuration的配置信息,MyBatis中的Mapper调用等等,在分析配置信息时只是讲了如何解析xml中的sql查询,但是并没有讲怎么解析Mapper中注解对应的SQL,就是如下:@ResultMap("BaseResultMap")@Select("select id, usernam...原创 2019-01-04 09:47:00 · 5092 阅读 · 0 评论 -
Mybatis之Mapper调用源码分析
Mybatis之Mapper调用源码分析这一篇是承接前面两篇的,分别为:Mybatis源码解析之配置加载(一), Mybatis源码解析之配置加载(二),前面两篇讲了在Mybatis启动时如何加载配置,这一节就讲在运行时,如何通过session获取Mapper代理类,从而实现对数据库的查询操作。程序首先展示下之前写的程序,main程序在第一篇中有展示,这里就不再完全的贴出来了,获取sess...原创 2019-01-03 08:08:56 · 660 阅读 · 0 评论 -
# Mybatis源码解析之配置加载(二)
Mybatis源码解析之配置加载(二)这一篇是承接上一篇文章Mybatis源码解析之配置加载(一),上一篇原本是想把整个配置加载都分析完全,然后发现内容还是比较多,所以决定分成两篇来说好了,现在就开始剩下的配置分析。配置加载继续回到parseConfiguration方法中,**parseConfiguration()**方法如下:private void parseConfigurat...原创 2019-01-02 08:13:53 · 620 阅读 · 1 评论 -
Mybatis源码解析之配置加载(一)
Mybatis源码解析之配置加载(一)用了好几年的mybatis了,但是很少来钻研mybatis原理所在,最近抽出空来,就把这一整套源码都研究了下,然后发现就是这些东西,mybatis没啥难度,于是决定把研究的这一整套写一个mybatis系列,记录一下,在这些完了以后,顺便写一个小的mybatis框架。1. demo演示还是从用法开始吧,就不开始就从源码说了,mybatis的conf配置文...原创 2019-01-01 11:27:08 · 3416 阅读 · 2 评论