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

  
  
<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 plain copy
  1. <insert id="insertAndGetId" useGeneratedKeys="true" keyProperty="id" parameterType="com.bookmanager.model.LeaveMessage">  
  2.     insert into leave_message_tbl (content, createdate,   
  3.      userid)  
  4.     values (#{content,jdbcType=VARCHAR}, #{createdate,jdbcType=DATE},   
  5.      #{userid,jdbcType=INTEGER})  
  6.  </insert>  

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

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


第二步:

     void insertAndGetId(LeaveMessage record);

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

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

第三步: 

[html]  view plain copy
  1. @RequestMapping("/save")  
  2. @ResponseBody  
  3. public ResultDTO save(@RequestBody LeaveMessage leaveMessage){  
  4.     ResultDTO dto = ResultDTO.getIntance();  
  5.     dto.message = "留言失败,请重新提交";  
  6.     dto.type = "error";  
  7.     try {  
  8.         /*leaveMessageService.save(leaveMessage);*/  
  9.         leaveMessageService.insertAndGetId(leaveMessage);  
  10.         System.out.println(leaveMessage.getId());  
  11.         dto.message = "恭喜你,留言成功";  
  12.         dto.type = "success";  
  13.     } catch (Exception e) {  
  14.         e.printStackTrace();  
  15.     }  
  16.     return dto;  
  17. }  

结果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值