从上一篇,我们复习了如何使用Mybatis,从此章开始,我们要开始阅读MyBatis的源码。
在开始阅读分析之前,我们首要思考一个问题,Mybatis都做了什么,我们都做了什么。如果是你,你如何完成这样的功能。
我们都做了什么:
1.首先我们在config.xml里面配置了数据源。和Mapper.xml的位置
2.然后我们在mapper.xml中定义了对应的dao层接口。
3.但是在service层我们直接就可以使用接口的实现类完成增删改查。
4.我们在mapper.xml中可以通过resultMap配置,直接返回一个定义好的实体类。
因此,如果是我,我会这样:
读取解析config.xml,根据URL和Driver等信息,生成Connection。
读取解析config.xml,获取Mapper.xml,将其中的每一个Sql定义成对象,在使这些对象执行,获取结果数据。
读取解析Mapper.xml,获取resultMap对象,将Sql执行后的数据,动态绑定到实体对象上返回。
根据Mapper.xml中定义的DAO层,通过反射,生成代理类,在service调用时,取到对应的代理,并执行对应的方法。
我们会根据这样的几个想法,去阅读源码,看看Mybatis中如何实现这样的一个功能