在使用mybatis操作MYSQL数据库时,想取插入数据后的主键,一直以为返回是主键,但取来取去得到的值是影响记录数。将我的代码贴一下,希望可以帮到其他人。
<!-- 增加检测信息--> <insert id="addInspectionInfoSQL" parameterType="java.util.HashMap" keyProperty="IID" keyColumn="IID"> <selectKey resultType="long" order="AFTER" keyProperty="IID"> SELECT LAST_INSERT_ID() as IID </selectKey> INSERT into We_InspectionInfo(LID,checkID,result,cost) VALUES(#{LID},#{checkID},#{result},#{cost}) </insert>
Map<String, Object> paramMap = new HashMap<String, Object>();
paramMap.put("LID",1);
paramMap.put("checkID",1);
paramMap.put("result","检测良好");
paramMap.put("cost",100);
Object key = this.sqlSessionTemplate.insert("addInspectionInfoSQL", paramMap);
注意 返回来的 key 值不是插入后自键的主键 而是影响记录数。
数据插入后,mybatis将主键放后到了paramMap中
取主键:Long iid = paramMap.get("IID").toString();