MyBatis源码分析--Dao的实现类(一)

MyBatis源码分析--Dao的实现类

现象

我们在写MyBaits查询的时候只需要提供接口,并不需要实现类。debug代码进去,发现实际执行的是MapperProxy的方法。为什么是MapperProxy,是怎么调用进去的。

dao的实现类实际上是MapperProxy

分析

我们在CutomerManageServiceImpl中使用customerMapper的时候就跟其他自定义的bean一样,通过@Resource注解的方式注入。说明ApplicationContext中已经有名字是CustomerMapper的bean了。

注解方式注入

验证一下:

打印出所有的bean名字

在bean列表中找到了我们想看到的“customerMapper”。

MyBatis源码分析--Dao的实现类(一)_第1张图片
容器中的customerMapper

结论

MyBatis在容器初始化的时候就为我们生成了dao接口的实现类,是MapperProxy类型的。究竟是什么时候生成的,怎么产生的,下面一节分析。

你可能感兴趣的:(MyBatis源码分析--Dao的实现类(一))