mybatis如何在插入数据完整以后获取数据的id
时间: 2023-12-06 22:45:36 浏览: 12
MyBatis在执行insert语句时,会将插入成功后的主键值保存到实体类中,因此可以通过以下方式获取插入数据的id:
1. 在MyBatis的映射文件中,使用`useGeneratedKeys`和`keyProperty`属性来配置主键的自动生成和保存。
例如:
```xml
<insert id="insertUser" parameterType="User" useGeneratedKeys="true" keyProperty="id">
insert into user (name, age) values (#{name}, #{age})
</insert>
```
2. 在Java代码中,调用`SqlSession`的`insert()`方法插入数据,并获取插入数据的id。
例如:
```java
User user = new User();
user.setName("Tom");
user.setAge(20);
SqlSession sqlSession = sqlSessionFactory.openSession();
try {
sqlSession.insert("insertUser", user);
int id = user.getId();
System.out.println("插入数据的id为:" + id);
} finally {
sqlSession.close();
}
```
以上就是使用MyBatis插入数据后获取数据的id的两种方式。
相关问题
mybatis插入数据返回id
在使用 MyBatis 插入数据时,可以通过以下两种方式获取插入数据的 ID:
1. 使用自增主键
如果表中的主键是自增的,可以在插入数据时将 ID 设置为 null,然后在插入后通过返回的影响行数判断是否插入成功,如果成功就可以通过对应的实体类对象获取插入的 ID。
示例代码:
```
<insert id="insertUser" parameterType="User">
INSERT INTO user (name, age, gender) VALUES (#{name}, #{age}, #{gender})
</insert>
<selectKey keyProperty="id" resultType="int" order="AFTER">
SELECT LAST_INSERT_ID()
</selectKey>
```
2. 使用 UUID 主键
如果表中的主键是 UUID,可以在插入数据时使用 Java 的 UUID 类生成 UUID,然后将 ID 设置为生成的 UUID,插入数据后即可获取插入的 ID。
示例代码:
```
<insert id="insertUser" parameterType="User">
INSERT INTO user (id, name, age, gender) VALUES (#{id}, #{name}, #{age}, #{gender})
</insert>
```
使用 Java 生成 UUID:
```
String uuid = UUID.randomUUID().toString();
user.setId(uuid);
```
注意:在使用 UUID 主键时,需要将表中主键的类型设置为 VARCHAR。
mybatis-plus插入数据返回id
mybatis-plus插入数据返回id的方法:
1.使用注解
可以在Mapper接口的方法上使用@Insert注解,然后在参数对象上添加@Options注解,设置useGeneratedKeys=true和keyProperty属性值为主键字段名,如下所示:
```java
@Insert("insert into user(name, age) values(#{name}, #{age})")
@Options(useGeneratedKeys = true, keyProperty = "id")
int insert(User user);
```
2.使用XML配置
可以在Mapper XML文件中配置insert语句,并使用<selectKey>标签设置主键生成策略和返回值,如下所示:
```xml
<insert id="insert" parameterType="com.example.User">
insert into user(name, age)
values(#{name}, #{age})
<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Long">
SELECT LAST_INSERT_ID()
</selectKey>
</insert>
```
在这个示例中,我们使用了LAST_INSERT_ID()函数获取自动生成的主键值,并将其赋给id属性。注意,order属性的值必须为AFTER,这样才能保证在执行insert语句之后获取主键值。同时,resultType属性的值必须与主键类型相匹配。