书接上回,我们获取了mapper对象,可以开始执行SQL语句了,执行时我们调用的起点是从mapper中的方法开始的,流程如下:
1、调用mapper中的方法
2、mapper代理类调用sqlSession中的方法
3、sqlSession调用执行器的方法
4、执行器执行时,会调用mybatis中的statement处理SQL语句,将参数替换为实际值
5、结果处理器resultHandler对象直接执行,并处理返回的结果
上面是一个简略的流程,虽然简略,但是也能反映mybatis真正的处理流程。下面我们一步一步来实现,首先在sqlSession中定义查询方法:
![](https://img.haomeiwen.com/i3673891/84d1820b76a0e600.png)
有了这个方法后,前面动态代理中的方法就可以调用了:
![](https://img.haomeiwen.com/i3673891/b323f26ec215b4be.png)
下面要在执行器中创建查询方法让sqlSession调用:
![](https://img.haomeiwen.com/i3673891/35317898a6a8882d.png)
在sqlSession中就可以修改代码调用了:
![](https://img.haomeiwen.com/i3673891/ad7afb500e7535fb.png)
接下来是处理SQL语句的参数,我们前面定义SQL语句使用了一种简单的字符串替换的方式:
![](https://img.haomeiwen.com/i3673891/947264d4c4e3dead.png)
所以这里我们直接使用String类的字符替换就行,下面创建参数处理类:
![](https://img.haomeiwen.com/i3673891/ae791f334b45b156.png)
在参数处理类中,我们获取数据库连接,然后对SQL语句进行预编译和执行,有了参数处理类,前面的执行器就可以完善了:
![](https://img.haomeiwen.com/i3673891/9c2aed821e910503.png)
下一步就是处理结果了,其实到这一步,SQL语句已经执行完了。
网友评论