mybatisplus源码分析

    一直在使用mbg,虽然一直有听身边朋友说mybatisplus和通用mapper会多么的提高开发效率,但是生产中一直没有使用,最近有时间翻看了一下mybatisplus的源码,接下来我会将mybatisplus的设计思路详细说一下。之前一直有看通用mapper作者刘增辉老师的博客,曾经详细说过通用mapper的设计思路,因为有了这个基础,所以mybatisplus我就没有从最初的版本开始看,直接看的是最近的版本。 首先说明一下本人看的myabtisplus源码的版本是2018/4/25 11.21 develop分支,最后一次提交代码是yuxiaobin,在此向开发此工具的团队表示感谢。

    我们知道每个mapper配置文件的namespace属性对应于某个接口,应用程序通过接口访问mybatis时,mybatis会为这个接口生成一个代理对象,这个对象就叫mapper对象,在生成代理对象前mybatis会校验接口是否已注册,未注册的接口会产生一个异常。为了避免这种异常,就需要注册mapper类型。这个步骤是在XMLMapperBuilder的bindMapperForNamespace方法中完成的。它通过调用Configuration对象的addMapper方法完成,而Configuration对象的addMapper方法是通过MapperRegistry的addMapper方法完成的,它只是简单的将namespace属性对应的接口类型存入本地缓存中。

    Configuration对象提供了一个重载的addMappers(StringpackageName)方法,该方法以包路径名为参数,它的功能是自动扫描包路径下的接口并注册到MapperRegistry的缓存中,同时扫描包路径下的mapper配置文件并解析之。解析配置文件是在MapperAnnotationBuilder类的parse方法里完成的,该方法先解析配置文件,然后再解析接口里的注解配置,且注解里的配置会覆盖配置文件里的配置,也就是说注解的优先级高于配置文件,这点需要注意。


如果有需要更深层次的交流请发我邮箱,wangxinchao.ok@163.com

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. 简介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的...
    笨鸟慢飞阅读 6,432评论 0 4
  • 昨天是周末,刚好跟朋友聚餐小酌,而请客的是一位年轻的美女高管。闲聊之余听见一个话题,来自这位美女高管,话题是因为她...
    释道生阅读 355评论 0 0
  • 静如水漪12是什么人,我并不知道,也不认识她(他),只是最近两天我才开始关注静如水漪12发表的作品。 看样子,这是...
    高丘上阅读 915评论 24 50
  • 文/徐徐来 1 胡玥苦追许久的学长第一次答应和胡玥一起吃饭的时候,我看着胡玥在我的柜子里翻来翻去,只为了找一条合适...
    徐徐来阅读 5,287评论 21 111
  • 因为,那是一个非常脆弱的午后,有人不怀好意的背后中伤,苏凡直接给了她一记耳光,那时的苏凡还不能懂,人心各不同,...
    蝎子座的Miamas阅读 226评论 0 0

友情链接更多精彩内容