mybatis中使用增加功能的时候怎么同时返回数据库自增的ID?
时间: 2023-04-08 22:02:14 浏览: 109
可以在插入数据的 SQL 语句中添加 `useGeneratedKeys="true" keyProperty="id"`,其中 `useGeneratedKeys="true"` 表示使用数据库自增的 ID,`keyProperty="id"` 表示将自增的 ID 赋值给 Java 对象的 id 属性。例如:
```xml
<insert id="insertUser" parameterType="User" useGeneratedKeys="true" keyProperty="id">
insert into user (username, password) values (#{username}, #{password})
</insert>
```
在执行插入操作后,可以通过 `user.getId()` 获取自增的 ID 值。
相关问题
mybatis plus插入数据并返回自增id
在 MyBatis Plus 中,插入数据并返回自增 ID 可以通过以下步骤实现:
1. 创建一个实体类,用于映射数据库表的字段和属性。
2. 在实体类中,标注 `@TableName` 注解,指定对应的数据库表名。
3. 在实体类中,使用 `@TableId` 注解标注主键字段,并设置 `@TableId(type = IdType.AUTO)`,表示使用数据库自增主键。
4. 调用 MyBatis Plus 提供的 `insert` 方法插入数据,插入成功后,自增 ID 将会被赋值到实体类对应的字段上。
以下是一个示例代码:
```java
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Repository;
import org.springframework.stereotype.Service;
@Repository
public interface UserMapper extends BaseMapper<User> {
}
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
@Override
public boolean saveUser(User user) {
return save(user);
}
}
@TableName("user")
public class User {
@TableId(type = IdType.AUTO)
private Long id;
private String name;
private Integer age;
// 省略 getter 和 setter
}
```
在上述示例中,`User` 类是一个实体类,对应数据库中的 `user` 表。`id` 字段使用 `@TableId(type = IdType.AUTO)` 注解标注为自增主键。
在 `UserServiceImpl` 类中,调用 `save` 方法插入数据,插入成功后,自增 ID 将会被赋值到 `user` 对象的 `id` 字段上。
你可以根据你的需求在 `UserServiceImpl` 类中添加其他方法,如查询、更新等。
mybatis-plus自带的id自增策略是什么?
MyBatis-Plus 默认的 ID 自增策略是基于数据库自增机制的,即使用数据库的自增长 ID 来生成主键。具体来说,MyBatis-Plus 支持的数据库有不同的实现方式:
- MySQL:使用 AUTO_INCREMENT。
- PostgreSQL:使用 SERIAL。
- Oracle:使用 SEQUENCE。
- SQL Server:使用 IDENTITY。
在实体类中,可以通过 `@TableId` 注解来指定主键生成策略,默认值为 `IdType.NONE`,即不使用任何自增策略。如果要使用数据库自增长 ID,可以将 `IdType` 设置为 `AUTO`,例如:
```java
@TableId(type = IdType.AUTO)
private Long id;
```
这样 MyBatis-Plus 在插入数据时会自动忽略 ID 字段,并使用数据库自动生成的主键。