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 账号密码,填自己的数据库连接信息。
版权声明:本文为a704397849原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。