读mybatis源码之八:声明处理器StatementHandler

在执行器中,都会获取声明处理器:

public StatementHandler newStatementHandler(Executor executor, MappedStatement mappedStatement, Object parameterObject, RowBounds rowBounds, ResultHandler resultHandler, BoundSql boundSql) {
    StatementHandler statementHandler = new RoutingStatementHandler(executor, mappedStatement, parameterObject, rowBounds, resultHandler, boundSql);
    statementHandler = (StatementHandler) interceptorChain.pluginAll(statementHandler);
    return statementHandler;
  }
statementHandler = (StatementHandler) interceptorChain.pluginAll(statementHandler);

使用拦截器,声明处理可以定义插件


使用路由声明处理器,可以获取SimpleStatementHandler、PreparedStatementHandler、CallableStatementHandler三大处理器。

到底使用哪个处理器,是由ms.getStatementType参数决定,默认是 mappedStatement.statementType = StatementType.PREPARED;
在mapper里面的执行语句 xml标签中可以配置statementType属性:

Any one of STATEMENT, PREPARED or CALLABLE.  This causes MyBatis to use Statement,  PreparedStatement or CallableStatement 
respectively.  Default: PREPARED.

BaseStatementHandler
声明处理器基类,主要是产生 :
protected final TypeHandlerRegistry typeHandlerRegistry; //类型处理注册
protected final ResultSetHandler resultSetHandler;  //结果处理
protected final ParameterHandler parameterHandler; //参数处理
另外还准备Statement,具体由各个处理器生成instantiateStatement


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值