一:文章背景
本文从源码的角度进行分析Mybatis-Plus,为了阅读且吸收的更顺利,希望读者有以下基础:
- 对Java、Spring、Mybatis、Mybatis-Plus有一定的了解/使用基础
- 对底层源码有略微学习,哪怕是为了框架二开、框架扩展或知识储备
- 本文章参考源码 3.4.2
二:问题带入
使用过Mybatis-Plus的同学都知道不需要写xml即可使用默认的【单表】的增删改查及单表的复杂查询。
请思考以下问题:
- 为什么用了Mybatis-Plus就不需要写xml文件,只需要写一个接口继承BaseMapper?
- 在什么时候Mybatis-Plus将动态sql预埋了、预埋的字段内容有哪些?
- 如何优雅的新增自定义Mapper内置方法?
三:源码分析
先回答以上三个问题
3.1 为什么用了Mybatis-Plus就不需要写xml文件,只需要写一个接口继承BaseMapper?
总所周知:
1.Mybatis通过动态代理Mapper接口方法/SqlSession两种形式暴露给业务使用,其中Mapper接口的方式使用较多。
2.可以通过原生SqlSessionFactory.getMapper(),或者通过spring版本的Mybatis通过将MapperFactoryBean封装原生的Mapper生成Bean供业务访问。
同时,Mybat