我有一张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 关键字呢???