mybatis+mysql下,select count(*)语句一直返回null,明明表里不为空

我有一张ask表,里面有12条记录,且course_id都为1(int)
resultMap type="Ask" id="BaseAskMap"
result column="course_id" property="courseId"

select id="getCount" resultType="Integer" resultMap="BaseAskMap"
select count(*) from ask where course_id=#{courseId}
select

controller层传过去的courseId测试过了,的确为1,我就搞不懂了,为什么总是返回null???????

你在返回结果的那里是返回null?如果是这样,你需要看看mybatis里的语句是不是写的有问题,指返回值方面,如果只是返回Long的话,使用resultType属性

既然是返回的统计函数,那么可以确定的的值一定是整数。一般i接受就可以了。所以咋select标签中设置resultType为int就可以了。
你这里却又用resultMap来接受,显然你接受的也并非你用count统计出来的字段,你这个count统计的字段也没有加别名呢。
你应该在mapper接口中定义这个方法的时候,返回值就是int,或者long,然后这里在xml文件问写sql的时候,结果带不带都无所谓,
但是不应该用resultMap多此一举。

resultType和resultMap不应该工存于一个查询,resultType是包+类型

sql语句拷到工具执行看看呢

用断点跟过去或者把sql打印出来看下,看看是不是courseId没有传过去的原因。

你的SQL语句在控制台打印出来了吗??

断点看看,执行sql语句,看看是否是正确的

count(0)试试呢

把sql语句粘贴到可视化工具中试试,如果sql没问题那就是程序中哪里出问题了,比如没有写返回值等,断点看看

resultType="Integer" 改为 resultType="java.lang.Integer"

在Dao层debug试试,看看从数据库中是否已经查询到数据,如果有数据那么就是Dao到Controller之间的问题。

你把select标签的resultType换成parameterType就好了,sql语句没问题,select标签的问题,没有制定参数属性

返回值类型是一个“Ask”,你得到却是一个int类型。

resultMap="BaseAskMap" 你count(*) 没有映射吧

resultMap type="Ask" 这个Ask是什么类型啊

你 from 关键字呢???