外贸专业网站的公司,凌云网最新消息,wordpress显示ip,html网页案例费话不多少先上图#xff0c;我只喜欢画图分析#xff0c;看图片#xff1a;
有两个问题#xff1a; 问题1#xff1a; 我们一直在写Mapper/DAO只写了接口#xff0c;没有写具体的实现吧#xff1f; 【是的】 问题2#xff1a; 没有写实现类就没办法实例化执行后续的操…费话不多少先上图我只喜欢画图分析看图片
有两个问题 问题1 我们一直在写Mapper/DAO只写了接口没有写具体的实现吧 【是的】 问题2 没有写实现类就没办法实例化执行后续的操作那么又怎么去访问了数据库并且拿到了数据呢 虽说我们没有亲自去写实现类但是mybatis通过动态字节码技术也就是动态代理帮我们去生成了代理实现类比如我们在UserMapper.java 接口里写了一个insertUser(String username, String passwd, Date birthday)动态代理会根据这个接口生成具体的实现类也就是代理了UserMapper.java这个接口解析参数然后通过调用SqlSession.select()方法传入相应的参数然后由SqlSession去执行后续的操作比如调用Executor、StatementHandler等一系列操作。 请先生/公主看源码: 注远程一切的RPC几乎也都是通过代理去实现方法的调用调用其实就是跨虚拟机同步参数、方法状态的并不是把另一个虚拟机的方法拿回本地调用哦还是基于动态代理实现的。 【jdk的动态代理大家一定要提前弄清楚里面源码里面有涉及程序员使用mybatis就是面向接口的编程我们在使用时也都是调用接口xxxMapper.java然后通过唯一namespace匹配到唯一xxxMapper.xml然后交由mybatis的核心组件执行后续的操作。】 一条SQL的执行流程是不是很清晰了还不够清晰的话看看下面的执行链路图 跟踪链路如下 大家在看源码的时候可以从SqlSession入手跟踪注意Configuration、MappedStatement、StatementHandler之间相互引用的关系你中有我我中有你的类与类之间的关系。