iBatis会自动缓存每条查询语句的列名映射,所有如果你动态生成列名的话就有可能造成查询列名无效的问题
同一条SQL语句先被queryforpage()调用,SQL语句被拦截套上了分页语法。此时rn列名被缓存。之后你又使用queryforlist()方法执行查询。此时SQL语句不被拦截拼分页语法,此时便报出rn列名无效。解决办法是在SQL语句上加一个属性(remapResults)配置让每次执行都重新映射列名。注:仅在可能被queryforpage()和queryforlist()都调用的SQL语句上加此属性。(以牺牲性能为代价,损耗很小很小)。如下所示:
<selectid="sql_Sel_Mp_Design"parameterClass="map"resultClass="dto"remapResults="true">
同一条SQL语句先被queryforpage()调用,SQL语句被拦截套上了分页语法。此时rn列名被缓存。之后你又使用queryforlist()方法执行查询。此时SQL语句不被拦截拼分页语法,此时便报出rn列名无效。解决办法是在SQL语句上加一个属性(remapResults)配置让每次执行都重新映射列名。注:仅在可能被queryforpage()和queryforlist()都调用的SQL语句上加此属性。(以牺牲性能为代价,损耗很小很小)。如下所示:
<selectid="sql_Sel_Mp_Design"parameterClass="map"resultClass="dto"remapResults="true">
</select>
本文转自 winters1224 51CTO博客,原文链接:http://blog.51cto.com/winters1224/797836,如需转载请自行联系原作者