mybatis 实现插入返回id的例子
时间: 2024-05-05 09:17:52 浏览: 45
当使用MyBatis实现插入操作时,可以使用selectKey元素来返回生成的id。以下是一个示例代码:
```
<insert id="insertUser" parameterType="User">
INSERT INTO user (username, password) VALUES (#{username}, #{password})
<selectKey keyProperty="id" resultType="int" order="AFTER">
SELECT LAST_INSERT_ID()
</selectKey>
</insert>
```
这个代码示例中,我们使用selectKey元素在插入操作之后执行一个SELECT语句来返回自动生成的id,并将其保存到User对象的id属性中。
相关问题
mybatis插入数据返回id
Mybatis插入数据后返回主键id的方式取决于所使用的数据库和mapper配置方式。以下是一些常见的方式:
1. MySQL自增主键
如果使用MySQL自增主键,可以在mapper文件中使用`useGeneratedKeys`和`keyProperty`属性来返回自增主键的值。
示例:
```xml
<insert id="insertUser" parameterType="User" useGeneratedKeys="true" keyProperty="id">
insert into user(name, age) values (#{name}, #{age})
</insert>
```
在这个例子中,`useGeneratedKeys`属性告诉Mybatis使用数据库自动生成的主键值,并将其设置到`keyProperty`指定的对象属性中(即`User`对象的`id`属性)。
2. Oracle序列主键
如果使用Oracle序列主键,可以在mapper文件中使用`selectKey`元素来返回序列主键的值。
示例:
```xml
<insert id="insertUser" parameterType="User">
<selectKey keyProperty="id" resultType="Long" order="BEFORE">
select user_seq.nextval from dual
</selectKey>
insert into user(id, name, age) values (#{id}, #{name}, #{age})
</insert>
```
在这个例子中,`selectKey`元素在插入语句之前执行,返回序列的下一个值,并将其设置到`keyProperty`指定的对象属性中(即`User`对象的`id`属性)。
3. SQL Server自增主键
如果使用SQL Server自增主键,可以在mapper文件中使用`selectKey`元素来返回自增主键的值。
示例:
```xml
<insert id="insertUser" parameterType="User">
<selectKey keyProperty="id" order="AFTER" resultType="Long">
select @@IDENTITY
</selectKey>
insert into user(name, age) values (#{name}, #{age})
</insert>
```
在这个例子中,`selectKey`元素在插入语句之后执行,返回自增主键的值,并将其设置到`keyProperty`指定的对象属性中(即`User`对象的`id`属性)。
注意:`@@IDENTITY`是SQL Server中获取自增主键的方式,需要在mapper文件中使用。如果使用的是其他数据库,需要查阅相应的文档来确定获取自增主键的方式。
mybatis 批量插入代码例子
以下是一个 MyBatis 批量插入的代码示例:
```
<insert id="batchInsert" parameterType="java.util.List">
insert into my_table (column1, column2, column3)
values
<foreach collection="list" item="item" separator=",">
(#{item.column1}, #{item.column2}, #{item.column3})
</foreach>
</insert>
```
其中,`list` 是一个包含多个对象的列表,每个对象都有 `column1`、`column2` 和 `column3` 三个属性,对应表中的三个列。在 SQL 语句中,使用 `foreach` 标签遍历列表,将每个对象的属性值插入到对应的列中。这样,就可以一次性插入多条数据,提高插入效率。
阅读全文