mybatis使用和原理

一、

 

二、

 

三、mybatis原理

1. 静态代理和动态代理

a. 静态代理可以为一个接口生成一个代理类,代理类去操作这个接口的具体实现类

b. 动态代理可以为多个接口生成同一个代理类,代理类去操作这个接口的具体实现类, 通过拦截器方法的回调,对目标target方法进行增强

2. mybatis使用动态代理,生成了接口的代理类 org.apache.ibatis.binding.MapperProxy

3. 代理类也做了实现类的工作,通过xml和实现类的映射关系,执行sql

4. mybatis使用方法的全限定名作为key,去xml寻找唯一的sql去执行,因此接口Mapper内的方法不能重载

 

四、可以使用JDK动态代理自定义一个MapperProxy,跟mybatis的源码比较

 

 

参考:

https://www.cnblogs.com/williamjie/p/11188346.html

 

posted @ 2019-08-10 10:22  牧云文仔  阅读(210)  评论(0编辑  收藏  举报