mybatis insert 获取主键

根据业务需求,我们常常需要在 insert 插入一条数据后,对刚刚插入的数据进行某种操作;这时就需要获取新添加的数据的主键,如果主键是自增的话,重新查询,比较麻烦;mybatis 提供了一种配置,可以在 insert 执行后获取到新添加数据的主键

配置如下

<insert id="insert" useGeneratedKeys="true" keyProperty="id" parameterType="com.demo.bean.Book">
	  insert into book(name, author)  values(#{name}, #{author}) 
</insert>

只需在 insert 标签中添加 useGeneratedKeys="true" keyProperty="id" ,其中 keyProperty 对应的 id 为自增的主键字段

测试如下

实体类

package com.demo.bean;

public class Book {
	
	private Integer id;
	
	private String name;
	
	private String author;

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getAuthor() {
		return author;
	}

	public void setAuthor(String author) {
		this.author = author;
	}
}

mapper层

package com.demo.mapper;

import org.apache.ibatis.annotations.Mapper;
import com.demo.bean.Book;

@Mapper
public interface BookMapper {
	
	int insert(Book book); 

}

mapper.xml 文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.demo.mapper.BookMapper">
	
	<resultMap id="BaseResultMap" type="com.demo.bean.Book">
		<id column="id" property="id" jdbcType="VARCHAR" />
		<result column="name" property="name" jdbcType="VARCHAR" />
		<result column="author" property="author" jdbcType="VARCHAR" />
	</resultMap>
	
	<insert id="insert" useGeneratedKeys="true" keyProperty="id" parameterType="com.demo.bean.Book">
	  insert into book(name, author)  values(#{name}, #{author}) 
	</insert>
	
</mapper>

注意: keyProperty 对应的 id ,是 resultMap 中配置的主键 id (二者字段必须对应上)

测试类

package com.demo;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import com.demo.bean.Book;
import com.demo.mapper.BookMapper;

@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringbootJspApplicationTests {
	
	@Autowired
	private BookMapper bookMapper; 

	@Test
	public void contextLoads() {
		Book book = new Book();
		book.setName("西游记");
		book.setAuthor("吴承恩");
		bookMapper.insert(book);
		System.out.println("返回的主键:   "+book.getId());
	}

}

运行测试类,控制台打印如下

数据库如下

成功获取到 主键 id = 4

猜你喜欢

转载自blog.csdn.net/wsjzzcbq/article/details/83311465