生产环境上由于各种原因。一套小应用的ibatis做了调整。部分功能由之前常规的xml配置处理,改为了使用原生sql语句后直接执行。即传入配置表中的sql语句直接进行查询。
xml配置
<select id="executeSql" resultClass="java.util.HashMap" remapResults="true" parameterClass="java.lang.String" timeout="60">
<![CDATA[ $sql$ ]]>
</select>
java代码
public List<Map<String, Object>> selectCheckList(String sql) {
return (List<Map<String, Object>>) baseDao.queryForList("executeSql", sql);
}
功能能够正常进行查询。但是,会碰到有些比较长的sql查询后,控制台报错。但仍然能够返回结果。sql语句放在plsql中能够正常执行。
控制台异常信息
2017-9-30 13:14:12 com.upic.upfa.app.persistence.dao.ibatis.BaseDAO logSql
严重: [SQL],executeSql,32323,inefficient,select * from xxxxx.............
网上搜索了好多,但没有比较满意的答案。请问各位有没有这方面的经验能告知一二,谢谢各位了。
你是在拼sql?
sql是配置在数据库里。不是拼出来的。因为太长,报错的sql我用。。。。。代替了。<selectid="selectCustomSql"parameterType="string"resultType="java.util.Map"><![CDATA[${value}]]></select>
这样写是可以的
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。