springboot mybatis mysql数据库insert返回主键,mapper接口中 @insert注解 sql添加插入数据获取自增长的主键,附测试demo源码

mybatis mysql数据库表插入一条记录返回自增长主键值,可以通过@Options返回

如果 表的自增长主键字段名是id,那么可以通过下面写法获取插入的主键值,如下:

@Options(useGeneratedKeys=true, keyProperty="id", keyColumn="id")

具体实现看下面介绍,最后附测试demo源码

test 数据库 有一张表 account , 有2个字段 id 和 password , 其中id是自增长的主键
在这里插入图片描述

CREATE TABLE `account` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `password` varchar(22) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

mapper 接口文件中,添加account记录的方法,用@Options(useGeneratedKeys=true, keyProperty=“id”, keyColumn=“id”) 获取插入自增长主键值
详细说明见下面的注释

package com.example.mybatis_demo.mapper.dbtest;

import com.example.mybatis_demo.pojo.Account;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Options;

@Mapper
public interface TestMapper {
    /**
     * useGeneratedKeys="true":使用自动生成的主键
     * keyProperty:指定主键是(javaBean的)哪个属性,这里的javabean是account ,
     *             插入表中的主键值会通过调用account.setId写入到account的id属性中
     *             
     *             注意:插入的主键值是通过javaBean的id获取,而不是通过方法返回值获取
     *
     * keyColumn:是数据库表中自增长主键的字段名为id
     * @param account
     * @return void 注意这里返回空,插入的主键值不是通过return返回获取,
     * 插入表中的主键值会通过调用account.setId写入到account的id属性中
     */
    @Insert("INSERT INTO account (password) VALUES (#{password})")
    @Options(useGeneratedKeys=true, keyProperty="id", keyColumn="id")
    public void addAccount(Account account);
}

测试类

package com.example.mybatis_demo.controller;

import com.example.mybatis_demo.mapper.dbtest.TestMapper;
import com.example.mybatis_demo.pojo.Account;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class TestController {
    @Autowired
    TestMapper testMapper;

    @RequestMapping("/account/add")
    @ResponseBody
    public String addAccount(){
        System.out.println("addAccount");
        Account account = new Account();
        account.password = "123456";
        testMapper.addAccount(account);
        System.out.println("id="+account.id);
        return "add account id="+account.id;
    }

}

第一次 添加account
在这里插入图片描述
第二次添加 account
在这里插入图片描述

demo源码

链接:https://pan.baidu.com/s/1V9hcP2pVcj6b6yJGHzYa4g
提取码:8req

注:访问数据库的ip port 账号密码,填自己的数据库连接信息。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值