mybatis是非常方便应用到spring项目中的持久层框架,他要求我们建立mapper接口,建立mapper.xml文件等等特殊的操作。那么他们建立之后是怎么样去调用的呢,我做了一个简单的调试,下面把调试后的心得整理一下,给自己mark一下,便于回顾。

一、生成mapper代理对象过程:

(1)调用SqlSessionFactoryBean的object()方法,开始创建sqlsessionbean对象;
(3)之后调用Configration类的addmapper()方法,进而去调用MapperRegistry类中的addmapper()方法为mapper接口创建代理对象;
(2)最后后XMLMapperBuilder类的bulidstatement()方法创建*mapper.xml文件的MapperStatement对象;

二、返回mapper代理对象实例过程:

(1)由于mybatis实现了FactoryBean接口,所以Spring会自动执行MapperFactoryBean实现类的getObject()方法;
(2)调用SqlsessionTemplete类的getMapper()方法,之后调用Configration类的getmapper()方法,进而去调用MapperRegistry类的getmapper()方法,获取已注册的mapper代理对象,并返回实例;

三、执行mapper代理对象方法:

(1)通过前端调用Controller,Service被执行;
(2)Service调用的mapper方法,触发代理对象invoke方法;
(3)然后MapperMethod调用execute()方法;
(4)最后根据statement(包名.接口名.方法名)查询MapperStatement对象,执行sql,返回结果;

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐