
深入学习MyBatis
文章平均质量分 96
Apple_Web
吃苹果的程序员正在努力ing...
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
源码透析MapperScannerRegistrar和MapperScannerConfigurer的区别及作用
在使用Spring Boot和MyBatis整合的时候,我们经常会看到@MapperScan这个注解,它的作用是扫描指定包下的Mapper接口,并将它们注册到Spring容器中,这样我们就可以在Service层或者Controller层直接注入Mapper接口的实例,而不需要写DAO层的实现类。那么,@MapperScan这个注解是如何实现这个功能的呢?它背后涉及到了两个重要的类:MapperScannerRegistrar和MapperScannerConfigurer,它们之间有什么区别和联系呢?原创 2024-01-21 18:04:17 · 1537 阅读 · 0 评论 -
Mybatis分页插件之PageHelper生效and失效原理解析
PageHelper是一个优秀的Mybatis分页插件,它可以帮助我们自动完成分页查询的工作。它的使用非常简单,只需要在查询之前调用PageHelper.startPage方法,传入页码和每页大小,就可以实现分页效果。PageHelper还提供了很多其他的配置和功能,例如排序、合理化、分页参数映射等。那么,PageHelper是如何实现分页功能的呢?本文将从源码的角度,一步步分析PageHelper的实现原理,希望能够对大家有所帮助。对指定mapper查询支持分页,前面一定要有。原创 2023-12-30 23:25:54 · 2554 阅读 · 0 评论 -
构建自己的拦截器:深入理解MyBatis的拦截机制
Mybatis拦截器并不是每个对象里面的方法都可以被拦截的。Mybatis拦截器只能拦截Executor、StatementHandler、ParameterHandler、ResultSetHandler四个类里面的方法,这四个对象在创建的时候才会创建代理。Mybatis拦截器是Mybatis提供的一种插件功能,它允许你在已映射语句执行过程中的某一点进行拦截调用。原创 2023-12-24 23:36:21 · 2515 阅读 · 0 评论 -
Mybatis-Spring整合原理:MapperFactoryBean和MapperScannerConfigurer的区别及源码剖析
1.是一个包扫描的配置类,其中属性是必需的,多个包时可以使用逗号隔开。二选一即可。如果都选了那么根据引用的创建的SqlSession会被覆盖掉。如果两个都没配置,将会根据类型自动装配,这种方式适合应用程序中只有一个或者的bean存在。其它配置就不总结了。2. 具体实现扫描以及注册接口的功能被委托给类了。具体做法就是将Spring扫描接口后生成的修改成一个表示的,而是一个实现的特殊bean,相当于返回Mapper接口实例的工厂。具体返回接口实例的原理是MyBatis本身的接口绑定功能,底层其实是动态代理。原创 2023-12-16 23:18:00 · 1968 阅读 · 0 评论 -
Mybatis与Spring结合深探——MapperFactoryBean的奥秘
在没有Spring单独使用Mybatis的时候,我在之前的文章超硬核解析Mybatis动态代理原理!只有接口没实现也能跑?讲解到了调用链路在SqlSessionFactoryBuilder().build方法 中最终调用Configuration对象的addMappper()方法(实际上是委托给MapperRegistry的addMapper)添加对应的MapperProxyFactory代理工厂类,最终通过这个工厂类生成对应的代理对象MapperProxy。原创 2023-12-10 23:57:07 · 2171 阅读 · 0 评论 -
超硬核解析Mybatis动态代理原理!只有接口没实现也能跑?
提到MyBatis,很多人可能已经使用过,MyBatis中的mapper接口实际上并没有对应的实现类,它的功能通过一个对应的xml配置文件来实现。这意味着当我们调用一个mapper接口时,我们实际上是在执行xml文件中定义的SQL语句来操作数据。那么Mybatis的mapper为啥只有接口没有实现类,它却能工作?答案很简单,动态代理,但是要真正理解这个动态代理的整个过程,还是有点费劲的,没事,接下来我们一步步解析。Mybatis的动态代理工作原理概括步骤如下:Mapper接口与XML的关联。原创 2023-12-03 22:40:23 · 4248 阅读 · 2 评论