在ssm框架里,我在xml里面<inser标签t执行SQL增加语句,该sql语句并没有设置增加信息的id,该id由mysql已经设置好的主键自动递增,我该如何获取我增加的这条信息的id,并且作为返回值返回给我的java控制层,控制层如何接收
时间: 2024-02-22 07:58:25 浏览: 62
在SSM框架中,可以通过以下步骤获取新增记录的ID,并将其作为返回值返回给Java控制层:
1. 在`<insert>`标签中添加`useGeneratedKeys="true" keyProperty="id"`属性,表示使用数据库自动生成的主键,并将其赋值给Java对象的id属性。例如:
```xml
<insert id="insertUser" parameterType="User" useGeneratedKeys="true" keyProperty="id">
insert into user(username, password) values(#{username}, #{password})
</insert>
```
在执行该插入语句后,User对象的id属性即为新增记录的主键值。
2. 在`<insert>`标签中添加`selectKey`子元素,通过SQL语句查询新增记录的主键值,并将其赋值给Java对象的id属性。例如:
```xml
<insert id="insertUser" parameterType="User">
<selectKey resultType="int" keyProperty="id" order="AFTER">
select LAST_INSERT_ID()
</selectKey>
insert into user(username, password) values(#{username}, #{password})
</insert>
```
在执行该插入语句后,User对象的id属性即为新增记录的主键值。其中,`select LAST_INSERT_ID()`是MySQL特有的函数,用于获取最后一次插入的自增ID。
3. 在Mapper接口中定义返回值为int类型的方法,用于获取新增记录的主键值。例如:
```java
public interface UserMapper {
int insertUser(User user);
}
```
4. 在Java控制层中调用Mapper接口中定义的方法,即可获取新增记录的主键值。例如:
```java
@RestController
public class UserController {
@Autowired
private UserMapper userMapper;
@PostMapping("/user")
public int addUser(@RequestBody User user) {
userMapper.insertUser(user);
return user.getId();
}
}
```
在上述示例中,`addUser`方法调用`userMapper.insertUser(user)`方法新增用户信息,并通过`user.getId()`方法获取新增记录的主键值作为返回值返回给控制层。
阅读全文