?? nativesqlquerydaoimp.java
字號:
/**
* 2008/02/15
*
* @author 何 貝
*/
package com.hb.core.query.queryImp.hibernate3;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.hibernate.SQLQuery;
import org.hibernate.transform.AliasToBeanResultTransformer;
import org.hibernate.type.ImmutableType;
import com.hb.core.query.IQueryCommand;
/**
* NativeSQL動態查詢實現
*/
public class NativeSQLQueryDaoImp extends AbstractQueryDaoImp {
@SuppressWarnings("unchecked")
public List<Object> executeQuery(IQueryCommand queryCommand) {
queryCommand.createQuerySql();
queryCommand.createQueryItemMap();
queryCommand.createDomainClass();
if (availableQueryParamMap(queryCommand) && availableQuerySql(queryCommand)
&& availableQueryItemMap(queryCommand) && availableDomainClass(queryCommand)) {
Set<Map.Entry<String, Object>> paramSet = queryCommand.getQueryParamMap().entrySet();
String[] paramNames = new String[paramSet.size()];
Object[] values = new Object[paramSet.size()];
int index = 0;
for (Map.Entry<String, Object> entry : paramSet) {
paramNames[index] = entry.getKey();
values[index] = entry.getValue();
index++;
}
// 創建動態查詢對象
SQLQuery query = getSession().createSQLQuery(queryCommand.getQuerySql());
// 查詢參數注入
for (int i = 0; i < values.length; i++) {
query.setParameter(paramNames[i], values[i]);
}
Set<Map.Entry<String, ImmutableType>> queryItemSet = queryCommand.getQueryItemMap().entrySet();
// 查詢結果映射注入
for (Map.Entry<String, ImmutableType> entry : queryItemSet) {
query.addScalar(entry.getKey(), entry.getValue());
}
// 查詢結果對象注入
query.setResultTransformer(new AliasToBeanResultTransformer(queryCommand.getDomainClass()));
query.setFirstResult(queryCommand.getFirstResultPost());
query.setMaxResults(queryCommand.getMaxResultCount());
return query.list();
}
return null;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -