mybatis返回结果集为null,但是mysql执行有结果,如何分析这个问题

我正在尝试使用’group_concat’函数运行一个有点复杂的sql语句进行统计。

当使用navicat运行sql语句时,返回了正确的结果。但是当我在idea中调试这个sql时(mybatis的select语句),它返回了null值。

我用HashMapHashMap<String,Long>接收mybatis执行的结果集,我猜是mybatis执行sql返回的结果集封装错误。但是我尝试了很长时间,并没有找到解决方案。
mybatis返回结果集为null,但是mysql执行有结果,如何分析这个问题

  • 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
    mybatis返回结果集为null,但是mysql执行有结果,如何分析这个问题

尝试了很久,尝试过把结果集封装为List返回,仍然不可行;或者封装为一个新的对象也不行。

最佳答案

把GROUP BY #{column} 替换为 GROUP BY ${column}

1年前 评论
BryanZhang (楼主) 1年前
讨论数量: 3

把GROUP BY #{column} 替换为 GROUP BY ${column}

1年前 评论
BryanZhang (楼主) 1年前

可以把mybatis的debug日志开出来查

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!