本篇是针对mybatis的handler相关的源码解析。
我们需要先了解一下StatementHandler(它是一个接口),它是被BaseStatementHandler实现,PreparedStatementHandler再继承BaseStatementHandler。
有兴趣的可以idea 双击shift搜索一下相关类的具体内容。
然后看一下相关的实现类:
关系图如下:


上面的我们需要注意的是CallableStatementHandler,PreparedStatementHandler,SimpleStatementHandler,
我们从PreparedStatementHandler开始看。
这个时候很多人可能会想,为什么要了解PreparedStatementHandler。
因为它主要做一个Statement的以预处理的处理器,可以提高效率。它和jdbc的Preaprement是相互交互的。也是mybatis比较重要的一个类。

CallableStatementHandler的话主要是通过CallableStatement来执行sql,它主要是一个存储执行过程。
SimpleStatementHandler底层就是我们jdbc中的用的Statement来完成数据库的相关操作,所以它是没有使用占位符相关的流程的。但是该方法存在sql注入问题,所以正常都是使用PrepareStatement(它实际也继承了Statement)。
网友评论