mybatis修改完一条数据怎么获取修改的id
时间: 2023-10-10 11:11:02 浏览: 36
在MyBatis中,修改完一条数据后可以通过以下两种方式获取修改的ID:
1. 使用数据库自增主键
如果你在数据库中使用了自增主键,那么在执行修改操作之前,你需要先在对应的mapper.xml文件中设置主键自动生成:
```xml
<insert id="insertUser" parameterType="User" useGeneratedKeys="true" keyProperty="id">
INSERT INTO users (name, age, gender) VALUES (#{name}, #{age}, #{gender})
</insert>
```
在这个例子中,我们设置了keyProperty属性为id,表示我们需要将自动生成的主键ID设置到User对象的id属性中。
然后在执行修改操作后,就可以通过User对象的id属性获取修改的ID:
```java
SqlSession sqlSession = sqlSessionFactory.openSession();
try {
User user = new User();
user.setId(1);
user.setName("Tom");
user.setAge(20);
user.setGender("male");
int rows = sqlSession.update("updateUser", user);
if (rows > 0) {
System.out.println("修改成功,修改的ID为:" + user.getId());
}
sqlSession.commit();
} finally {
sqlSession.close();
}
```
2. 使用数据库返回主键
如果你在数据库中没有设置自增主键,那么可以通过在mapper.xml中设置useGeneratedKeys和keyProperty属性来获取数据库返回的主键:
```xml
<insert id="insertUser" parameterType="User" useGeneratedKeys="true" keyProperty="id">
INSERT INTO users (name, age, gender) VALUES (#{name}, #{age}, #{gender})
</insert>
```
在执行修改操作后,可以通过User对象的id属性获取修改的ID:
```java
SqlSession sqlSession = sqlSessionFactory.openSession();
try {
User user = new User();
user.setId(1);
user.setName("Tom");
user.setAge(20);
user.setGender("male");
int rows = sqlSession.update("updateUser", user);
if (rows > 0) {
System.out.println("修改成功,修改的ID为:" + user.getId());
}
sqlSession.commit();
} finally {
sqlSession.close();
}
```
需要注意的是,使用数据库返回主键的方式,需要数据库支持返回主键功能,如果你使用的是某些老版本的数据库,可能不支持该功能。