mybatis中主键回填
时间: 2024-06-17 22:01:43 浏览: 10
在MyBatis中,主键回填(也称为自增或自动增长)是指当插入新记录时,数据库会自动为该字段生成一个唯一的值。这对于使用ID作为主键并且希望由数据库管理唯一性的场景非常有用。在MyBatis的映射文件中,你可以通过配置来启用这个功能:
1. 使用`<insert>`标签时,通常在`<insert>`元素内部,对于需要自动生成主键的字段,使用`autoGeneratedKeys`属性并指定`keyProperty`属性,例如:
```xml
<insert id="insertUser" parameterType="com.example.User">
INSERT INTO users (name, email) VALUES (#{name}, #{email})
<if test="id == null">
<selectKey keyProperty="id" resultType="int" order="AFTER">
SELECT LAST_INSERT_ID()
</selectKey>
</if>
</insert>
```
在这里,如果`id`参数为`null`,那么MyBatis会在插入操作后执行SQL `SELECT LAST_INSERT_ID()`来获取刚插入的行的主键值。
2. 对于使用`<insertProvider>`的动态插入,可以在Provider方法中处理主键回填:
```java
Object parameter = new User();
parameter.setName("John Doe");
parameter.setEmail("john.doe@example.com");
SqlSession sqlSession = ...;
int id = sqlSession.insert("insertUser", parameter);
User savedUser = sqlSession.selectOne("getUserById", id);
```
在上述代码中,`insertUser`方法的返回值`id`就是刚插入的用户表中的主键。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)