mybatis返回结果集为null,但是mysql执行有结果,如何分析这个问题
我正在尝试使用’group_concat’函数运行一个有点复杂的sql语句进行统计。
当使用navicat运行sql语句时,返回了正确的结果。但是当我在idea中调试这个sql时(mybatis的select语句),它返回了null值。
我用HashMapHashMap<String,Long>
接收mybatis执行的结果集,我猜是mybatis执行sql返回的结果集封装错误。但是我尝试了很长时间,并没有找到解决方案。
- mapper接口的接收声明
HashMap<String, Long> getOption(@Param("column") String column);
- mapper.xml的select语句
<select id="getOption" resultType="java.util.HashMap"> SELECT GROUP_CONCAT(form.cha SEPARATOR '') cha, GROUP_CONCAT(form.hege SEPARATOR '') hege, GROUP_CONCAT(form.lianghao SEPARATOR '') lianghao, GROUP_CONCAT(form.youxiu SEPARATOR '') youxiu FROM ( SELECT ( CASE WHEN #{column} = '0' THEN count(*) ELSE NULL END) AS 'cha', ( CASE WHEN #{column} = '1' THEN count(*) ELSE NULL END ) AS 'hege', ( CASE WHEN #{column} = '2' THEN count(*) ELSE NULL END ) AS 'lianghao', ( CASE WHEN #{column} = '3' THEN count(*) ELSE NULL END ) AS 'youxiu' FROM corp_feedback_student GROUP BY #{column} ) form </select>
- 调试返回的结果为null
尝试了很久,尝试过把结果集封装为List返回,仍然不可行;或者封装为一个新的对象也不行。
把GROUP BY #{column} 替换为 GROUP BY ${column}