Mybatis Plus 怎么关闭useGeneratedKeys = false
时间: 2023-10-17 19:03:33 浏览: 88
Mybatis Plus 默认开启了 useGeneratedKeys = true,这表示在插入数据时,会自动获取自增主键的值并赋值给实体类中的相应属性。如果你想关闭这个功能,可以在插入数据时显式地指定 useGeneratedKeys = false,如下所示:
```java
User user = new User();
user.setName("Tom");
user.setAge(18);
mapper.insert(user, false); // 第二个参数为 useGeneratedKeys = false
```
另外,你也可以在全局配置文件中配置:
```xml
<global-config>
<db-config>
<insert-strategy use-generated-keys="false"/>
</db-config>
</global-config>
```
这样就可以全局关闭 useGeneratedKeys 了。
相关问题
mybatis-plus中的useGeneratedKeys怎么用
Mybatis-Plus 中的 useGeneratedKeys 属性是用于指定是否使用自动生成的主键的。如果设置为 true,则表示使用自动生成的主键;如果设置为 false,则表示不使用自动生成的主键。
使用 useGeneratedKeys 属性需要做以下两个步骤:
1. 在实体类中定义主键字段,并设置主键生成策略为自增。
```java
public class User {
@TableId(type = IdType.AUTO)
private Long id;
private String name;
private Integer age;
// 省略 getter/setter 方法
}
```
2. 在 Mapper 接口的 insert 方法中设置 useGeneratedKeys 属性为 true,表示使用自动生成的主键。
```java
public interface UserMapper extends BaseMapper<User> {
@Insert("insert into user(name, age) values(#{name}, #{age})")
@Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id")
int insertUser(User user);
}
```
在以上代码中,@Options 注解用于设置 useGeneratedKeys、keyProperty 和 keyColumn 属性:
- useGeneratedKeys:指定是否使用自动生成的主键。设置为 true 表示使用自动生成的主键。
- keyProperty:指定将自动生成的主键值设置到实体类的哪个属性中。
- keyColumn:指定自动生成的主键字段的名称。
这样,在调用 Mapper 接口的 insertUser 方法时,就可以自动生成主键值,并将它设置到 User 实体类的 id 属性中了。
mybatis plus 批量插入回填自增ID
### 使用 MyBatis Plus 批量插入并回填自增 ID
#### 配置 `useGeneratedKeys` 和 `keyProperty`
为了使 MyBatis Plus 支持批量插入时回填自增 ID,在 XML 映射文件中的 SQL 插入语句需指定两个重要属性:`useGeneratedKeys="true"` 以及 `keyProperty="id"`。前者告知 JDBC 获取数据库生成的主键,后者则指明实体类中用于存储此主键值的字段名称[^3]。
```xml
<insert id="batchInsertWithIdBackfill" useGeneratedKeys="true" keyProperty="id">
INSERT INTO table_name (column1, column2,...)
VALUES
<foreach collection="list" item="item" separator=",">
(#{item.column1}, #{item.column2},...)
</foreach>
</insert>
```
上述代码片段展示了如何定义一个可以接受列表参数并通过循环结构来构建多个值集的方法,从而完成一次性的多条记录插入操作的同时确保每个新创建的对象都能获得其对应的唯一标识符[^1]。
#### Java 代码示例
在服务层编写相应的业务逻辑处理函数:
```java
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
@Service
public class YourServiceImpl extends ServiceImpl<YourMapper, YourEntity> {
public boolean batchSave(List<YourEntity> entities){
try {
saveBatch(entities);
return true;
} catch (Exception e) {
log.error("Failed to perform batch insertion with id backfill", e);
return false;
}
}
}
```
这里调用了来自父类 `ServiceImpl` 提供的一个便捷方法 `saveBatch()` 来执行实际的数据保存动作,并且自动实现了对传入集合内每一个实例对象的主键赋值过程[^4]。
阅读全文
相关推荐












