MyBatis 插入MySQL数据库返回主键异常 java.lang.Integer cannot be cast to java.lang.Long

项目中需要插入记录并返回主键,但是在执行的时候却报了异常:
java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long

DAO

Long saveExchangeCode(taExchangeCode exchangeCode);

XML

  <insert id="saveExchangeCode" parameterType="cn.com.ticketapply.domain.taExchangeCode" 
            useGeneratedKeys="true" keyProperty="exchangeId">
INSERT INTO ta_exchange_code  (order_id,exchange_code,use_status,perform_time,create_time,site_id,system_type)
    VALUES (#{orderId},#{exchangeCode},1,#{performTime},NOW(),#{siteId},#{systemType})
  </insert>

service

Long rows = 0L;
rows =exchangeCodeDao.saveExchangeCode(exchangeCodeInfo);

看似没有问题,但实际上存在两个问题。
1.DAO定义的时候应该用int,不是Long
刚开始我以为它会直接返回主键,所以把返回值定义成了int,但实际上,它返回的是影响行数。
这里写图片描述
但还有一个问题没有明白,即使返回的是int,为什么不能用long接收呢?希望看到这篇博客的人能指点一下。
2.service不能那么接返回值
在上面一条已经明确返回值是行数,那么问题来了,说好的主键该如何返回呢?
只能是修改接收主键的方式了
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值