首页 > 学院 > 开发设计 > 正文

myBatis如何返回count(*)得到的int值

2019-11-08 02:13:19
字体:
来源:转载
供稿:网友

转载自:http://blog.csdn.net/u010448530/article/details/52023256

今天遇到一问题,之前好好的系统,现在不管查询什么,都会报错:Result map does not contain a value for java.lang.Integer

仔细想想,报错的地方的代码都没有动过,唯一只有一个地方的代码是报错前新增的:

<select id="select" resultMap="java.lang.Integer" parameterType="java.lang.Integer" > SELECT CASE WHEN moneyIS NULL THEN 0 ELSE moneyEND AS money FROM ( select SUM(money) AS money from ABC where user_id = #{user_id,jdbcType=INTEGER} AND state = 11 AND is_del = 0 ) t </select>

相对应的Dao中的代码:

int selectTotalMoney(Integer userid);

估计问题就是在这里了。

于是经过反复尝试,发现一个好的解决办法:

<resultMap id="ResultOfInteger" type="java.lang.Integer"> <result column="budget" PRoperty="budget" jdbcType="INTEGER" /> </resultMap> <select id="select" resultMap="ResultOfInteger" parameterType="java.lang.Integer" > SELECT CASE WHEN moneyIS NULL THEN 0 ELSE moneyEND AS money FROM ( select SUM(money) AS money from ABC where user_id = #{user_id,jdbcType=INTEGER} AND state = 11 AND is_del = 0 ) t </select>

其实仔细一看,只是换了个表达方式而已,最终返回的值还是Integer,我只能说myBatis太死板了,以上仅为个人见解,若有不对之处,欢迎指正。

经过测试,将resultMap=”java.lang.Integer” 改成 resultType=”java.lang.Integer” 也可以解决问题。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表