您的位置:首页 > 其它

Mybatis源码之Statement处理器StatementHandler(一)

2016-09-24 22:31 549 查看
StatementHandler通过类名我们可以了解到它可能是Statement的处理器,它是一个接口,其实现类如下:



BaseStatementHandler:一个抽象类,只是实现了一些不涉及具体操作的方法

RoutingStatementHandler:类似路由器,根据配置文件来路由选择具体实现类SimpleStatementHandler、CallableStatementHandler和PreparedStatementHandler

SimpleStatementHandler:就是直接使用普通的Statement对象,这样每次执行SQL语句都需要数据库对SQL进行预编译

PrepareStatementHandler:使用PrepareStatement执行,虽然初次创建PrepareStatement时开销比较大,但在多次处理SQL时只需要初始化一次,可以有效提高性能

CallableStatementHandler:使用CallableStatement执行,CallableStatement是用来执行存储过程的。

选择不同StatementHandler的配置如下:通过根据不同的操作配置不同的StatementHandler来进行处理

<insert id="save"  statementType="STATEMENT"><!-- STATEMENT,PREPARED 或CALLABLE -->


源码如下:

/**
* @author Clinton Begin
*/
public interface StatementHandler {

//获取Statement
Statement prepare(Connection connection)
throws SQLException;
//设置参数
void parameterize(Statement statement)
throws SQLException;
//批量处理
void batch(Statement statement)
throws SQLException;
//更新处理
int update(Statement statement)
throws SQLException;
//查找处理
<E> List<E> query(Statement statement, ResultHandler resultHandler)
throws SQLException;
//获得BoundSql
BoundSql getBoundSql();
//获得ParameterHandler
ParameterHandler getParameterHandler();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: