mybatis 使用keyproperty="XXID" 返回插入数据主键ID值,装入一个map集合内如何取出?

鱼塘 发布于 2016/05/31 11:32
阅读 3K+
收藏 0

RT,用mybatis插入数据的时候需要同时返回ID,返回类型:parameterType="map",装值的集合是

map<String, String>.debug的时候map里面也有值,数据是:{id=XX,name=XX,mobile=XX}这样的格式,可是取值的时候用get("id"); getString("id");都会报类型转换异常:

java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.String

哪位大神知道如何解决?

加载中
0
温安适
温安适

首先Mybatis中parameterMap 不推荐使用。这个参数将来可能被删除。之后你的id被映射成了Long类型,解觉办法map<String, Object>并将id以Long类型存储。


温安适
温安适
回复 @鱼塘 : 客气
鱼塘
鱼塘
谢谢,问题已解决。
1
s
sharefly

值是取到了,但是类型是long, 你指定的返回类型是map<String,String>,String是一个对象,原子类型直接强制转换对象在JAVA中不被接受的,所以会出现你粘贴出来的类型转换失败的错误,

解决:

1. 返回的结果使用一个专门的DO对象来存储,id使用类型Long

2.单独获取这个ID ,返回类型就不用限制了,与数据库中约定保持一致

建议:

1.看看JAVA对象转换失败的原因以及java基本数据类型

2.这种非业务性自定义的错误信息,可以进行google,基本都会答案告诉你为什么

3.根据出错打出的堆栈,DEBUG到出错的代码,看看mybatis是怎么处理的

鱼塘
鱼塘
哦 我先试试 谢谢!
0
鱼塘
鱼塘

exService.insertCsv(map); //入库并返回ID
String mtid = String.valueOf(map.get("id"));

原来是溢出的问题  写成这样就不会有事了

返回顶部
顶部