ibatis全动态多查询

<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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值