<select id="getdataofftable" parameterClass="map" resultClass="string" >
SELECT $displayColum$ as result
FROM $tablename$
WHERE $primaryColumn$ =#fielddata#
</select>
java:
if(componentsProperties != null && componentsProperties.size() > 0){
for(ComponentsProperty componentsProperty: componentsProperties){
...................
Map param = new HashMap();
param.put("displayColum", displayColum);
param.put("tablename", ftablename);
param.put("primaryColumn", primaryColumn);
param.put("fielddata", valueId);
value = (String) getSqlMapClientTemplate().queryForObject("getdataofftable", param);
....................
}
}
当查询多组动态的表,动态的列的值的时候如不使用“as result”,刚会报错,
org.springframework.jdbc.BadSqlGrammarException: SqlMapClient operation; bad SQL grammar []; nested exception is com.ibatis.common.jdbc.exception.NestedSQLException:
--- The error occurred in config/Components.xml.
--- The error occurred while applying a result map.
--- Check the getdataofftable-AutoResultMap.
--- Check the result mapping for the 'SUPPLIER_NAME' property.
--- Cause: java.sql.SQLException: 列名无效
这是因为每次的查询结果都会以第一次查询时displayColum的值'SUPPLIER_NAME'来返回,但第二次后查询的结果已不再是该列名就会报错,故要把它们返回列指定为相同名称:as result;