设为首页 加入收藏

TOP

深入浅出MyBatis-Sqlsession(四)
2015-07-24 10:48:21 来源: 作者: 【 】 浏览:2
Tags:深入浅出 MyBatis-Sqlsession
r; } [java] view plaincopy
private StatementprepareStatement(StatementHandler handler) throwsSQLException { Statementstmt;
Connectionconnection = transaction.getConnection(); stmt =handler.prepare(connection);
handler.parameterize(stmt); return stmt;
} [java] view plaincopy
publicParameterHandler newParameterHandler(MappedStatement mappedStatement, ObjectparameterObject, BoundSql boundSql) { ParameterHandler parameterHandler = new DefaultParameterHandler(mappedStatement,parameterObject,boundSql);
parameterHandler = (ParameterHandler) interceptorChain.pluginAll(parameterHandler); returnparameterHandler;
} [java] view plaincopy
publicvoidsetParameters(PreparedStatement ps) throwsSQLException { ErrorContext.instance().activity("settingparameters").object(mappedStatement.getParameterMap().getId());
List parameterMappings = boundSql.getParameterMappings(); if(parameterMappings != null) {
MetaObject metaObject = parameterObject == null ? null :configuration.newMetaObject(parameterObject); for (int i = 0; i< parameterMappings.size(); i++) {
ParameterMapping parameterMapping = parameterMappings.get(i); if(parameterMapping.getMode() != ParameterMode.OUT) {
Object value; String propertyName = parameterMapping.getProperty();
PropertyTokenizer prop = newPropertyTokenizer(propertyName); if (parameterObject == null) {
value = null; } elseif (typeHandlerRegistry.hasTypeHandler(parameterObject.getClass())){
value = parameterObject; } elseif (boundSql.hasAdditionalParameter(propertyName)){
value = boundSql.getAdditionalParameter(propertyName); } elseif(propertyName.startsWith(ForEachSqlNode.ITEM_PREFIX)
&& boundSql.hasAdditionalParameter(prop.getName())){ value = boundSql.getAdditionalParameter(prop.getName());
if (value != null) { value = configuration.newMetaObject(value).getValue(propertyName.substring(prop.getName().length()));
} } else {
value = metaObject == null ? null :metaObject.getValue(propertyName); }
TypeHandler typeHandler = parameterMapping.getTypeHandler(); if (typeHandler == null) {
thrownew ExecutorException("Therewas no TypeHandler found for parameter " + propertyName + " of statement " + mappedStatement.getId()); }
typeHandler.setParameter(ps, i + 1, value,parameterMapping.getJdbcType()); }
}
}
} [java] view plaincopy
publicResultSetHandler newResultSetHandler(Executor executor, MappedStatementmappedStatement, RowBoundsrowBounds, ParameterHandler parameterHandler, ResultHandler resultHandler, BoundSqlboundSql) {
ResultSetHandler resultSetHandler =mappedStatement.hasNestedResultMaps() ? newNestedResultSetHandler(executor, mappedStatement, parameterHandler,resultHandler, boundSql, rowBounds): new FastResultSetHandler(executor,mappedStatement, parameterHandler, resultHandler, boundSql, rowBounds); resultSetHandler = (ResultSetHandler) interceptorChain.pluginAll(resultSetHandler);
returnresultSetHandler; } [java] view plaincopy
ResultSetHandler内部一条记录一条记录的处理,在处理每条记录的每一列时会调用TypeHandler转换结果,如下:
protectedbooleanapplyAutomaticMappings(ResultSet rs, List unmappedColumnNames,MetaObject metaObject) throws SQLException { booleanfoundValues = false;
for (StringcolumnName : unmappedColumnNames) { final Stringproperty = m
首页 上一页 1 2 3 4 下一页 尾页 4/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇oraInst.loc文件在不同os下有不同.. 下一篇Addnode.sh失败,日志文件报错PRKC..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Asus Armoury Crate (2025-12-26 02:52:33)
·WindowsFX (LinuxFX) (2025-12-26 02:52:30)
·[ Linux运维学习 ] (2025-12-26 02:52:27)
·HTTPS 详解一:附带 (2025-12-26 02:20:37)
·TCP/IP协议到底在讲 (2025-12-26 02:20:34)