为什么Mapper接口不需要实现类 ?
一、动态代理,我们来看一下获取Mapper的过程:

获取Mapper
我们都知道定义的Mapper接口是没有实现类的,Mapper映射其实是通过动态代理实现的

获取Mapper的过程,需要先获取MapperProxyFactory——Mapper代理工厂

MapperProxyFactory
MapperProxyFactory的作用是生成MapperProxy(Mapper代理对象)

这里可以看到动态代理对接口的绑定,它的作用就是生成动态代理对象(占位),而代理的方法被放到了MapperProxy中
MapperProxy
MapperProxy里,通常会生成一个MapperMethod对象,它是通过cachedMapperMethod方法对其进行初始化的,然后执行excute方法

MapperMethod
MapperMethod里的excute方法,会真正去执行sql。这里用到了命令模式,其实绕一圈,最终它还是通过 SqlSession的实例去运行对象的sql

 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号