您的位置:首页 > 数据库 > MySQL

mybatis+mysql返回插入值后的主键id

2015-08-25 23:08 821 查看
[code]<insert id="addBatch">
insert into action_group(pl_id, name, create_uid, `desc`)
values
<foreach collection="actionGroupList" item="actionGroup" separator=",">
(
<choose><when test="actionGroup.platformInfo!=null">#{actionGroup.platformInfo.plId}</when>
<otherwise>null</otherwise></choose>,
#{actionGroup.name},
<choose><when test="actionGroup.createUser!=null">#{actionGroup.createUser.userId}</when>
<otherwise>null</otherwise></choose>,
#{actionGroup.desc}
)
</foreach>
</insert>


第一步:

在Mybatis Mapper文件中添加属性“useGeneratedKeys”和“keyProperty”,其中keyProperty是Java对象的属性名!

[html] view
plaincopy

<insert id="insertAndGetId" useGeneratedKeys="true" keyProperty="id" parameterType="com.bookmanager.model.LeaveMessage">

insert into leave_message_tbl (content, createdate,

userid)

values (#{content,jdbcType=VARCHAR}, #{createdate,jdbcType=DATE},

#{userid,jdbcType=INTEGER})

</insert>

useGeneratedKeys: 要求数据库本身具备主键自动增长的功能,比如说,mysql,sqlserver可以使用useGeneratedKeys =true 这功能,不支持主键自动增长的数据库是不能使用useGeneratedKeys =true的;

keyProperty:一定得和java对象的属性名称一直,而不是表格的字段名

第二步:

void insertAndGetId(LeaveMessage record);

返回值为int,mybatis会判断为返回插入成功的条数所以会一直返回为1

此时获取id可以通过在mapper中 '对象'.getId()获得id值,当初困扰了好久,原来自动赋进去了

第三步:

[html] view
plaincopy

@RequestMapping("/save")

@ResponseBody

public ResultDTO save(@RequestBody LeaveMessage leaveMessage){

ResultDTO dto = ResultDTO.getIntance();

dto.message = "留言失败,请重新提交";

dto.type = "error";

try {

/*leaveMessageService.save(leaveMessage);*/

leaveMessageService.insertAndGetId(leaveMessage);

System.out.println(leaveMessage.getId());

dto.message = "恭喜你,留言成功";

dto.type = "success";

} catch (Exception e) {

e.printStackTrace();

}

return dto;

}

结果:

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