您的位置:首页 > 编程语言 > Java开发

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

2016-09-09 11:27 656 查看
项目中需要插入记录并返回主键,但是在执行的时候却报了异常:

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不能那么接返回值

在上面一条已经明确返回值是行数,那么问题来了,说好的主键该如何返回呢?

只能是修改接收主键的方式了

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql mybatis
相关文章推荐