📄 resultloader.java
字号:
/*
* Copyright 2004 Clinton Begin
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.ibatis.sqlmap.engine.mapping.result.loader;
import com.ibatis.sqlmap.engine.impl.ExtendedSqlMapClient;
import com.ibatis.sqlmap.engine.type.DomCollectionTypeMarker;
import java.sql.SQLException;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
* Class to load results into objects
*/
public class ResultLoader {
private ResultLoader() {
}
/**
* Loads a result lazily
*
* @param client - the client creating the object
* @param statementName - the name of the statement to be used
* @param parameterObject - the parameters for the statement
* @param targetType - the target type of the result
* @return the loaded result
* @throws SQLException
*/
public static Object loadResult(ExtendedSqlMapClient client, String statementName, Object parameterObject, Class targetType)
throws SQLException {
Object value = null;
if (client.isLazyLoadingEnabled()) {
if (client.isEnhancementEnabled()) {
EnhancedLazyResultLoader lazy = new EnhancedLazyResultLoader(client, statementName, parameterObject, targetType);
value = lazy.loadResult();
} else {
LazyResultLoader lazy = new LazyResultLoader(client, statementName, parameterObject, targetType);
value = lazy.loadResult();
}
} else {
value = getResult(client, statementName, parameterObject, targetType);
}
return value;
}
protected static Object getResult(ExtendedSqlMapClient client, String statementName, Object parameterObject, Class targetType) throws SQLException {
Object value = null;
if (DomCollectionTypeMarker.class.isAssignableFrom(targetType)) {
value = client.queryForList(statementName, parameterObject);
} else if (Set.class.isAssignableFrom(targetType)) {
value = new HashSet(client.queryForList(statementName, parameterObject));
} else if (Collection.class.isAssignableFrom(targetType)) {
value = client.queryForList(statementName, parameterObject);
} else if (targetType.isArray()) {
List list = client.queryForList(statementName, parameterObject);
value = listToArray(list, targetType.getComponentType());
} else {
value = client.queryForObject(statementName, parameterObject);
}
return value;
}
private static Object[] listToArray(List list, Class type) {
Object array = java.lang.reflect.Array.newInstance(type, list.size());
array = list.toArray((Object[]) array);
return (Object[]) array;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -