mybatis添加数据返回id
时间: 2023-09-24 15:05:06 浏览: 46
在MyBatis中,有两种方式可以获取插入数据后返回的自增主键ID。
一种方式是在XML文件中设置属性。通过在插入语句上使用`<selectKey>`标签,在插入之前执行查询语句获取自增ID。例如,在PostgreSQL数据库中可以使用`currval()`函数获取自增ID。示例代码如下:
```
<insert id="insertUser" parameterType="User">
<selectKey statement="select currval('app_user_id_seq')" keyProperty="id" before="false" resultType="Long"/>
INSERT INTO app_user (create_time, name, avatar, username, sex, id_number, score, ...)
VALUES (#{createTime}, #{name}, #{avatar}, #{username}, #{sex}, #{id_number}, #{score}, ...)
</insert>
```
另一种方式是使用注解来实现。在插入方法上使用`@SelectKey`注解,其中的`statement`属性指定查询语句,`keyProperty`属性指定返回的自增ID存放的属性名,`before`属性指定是否在插入之前执行查询语句,`resultType`属性指定返回的自增ID的类型。示例代码如下:
```
@Insert("INSERT INTO app_user (create_time, name, avatar, username, sex, id_number, score, ...)
VALUES (#{createTime}, #{name}, #{avatar}, #{username}, #{sex}, #{id_number}, #{score}, ...)")
@SelectKey(statement="select currval('app_user_id_seq')", keyProperty="id", before="false", resultType=Long.class)
int insert(User user);
```
通过以上两种方式,在插入数据后,可以获取到相应的自增主键ID。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [mybatis插入数据后返回自增主键ID的2种方式](https://blog.csdn.net/lchmyhua88/article/details/125132281)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *3* [mybatis插入数据,返回新增数据的id值](https://blog.csdn.net/web13618542420/article/details/126112961)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]