Mybatis Plus 怎么关闭useGeneratedKeys = false
时间: 2023-10-17 20:03:33 浏览: 87
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 执行saveBatch中出现Too many keys are generated. There are only 13 target objects. You either specified a wrong 'keyProperty' or encountered a driver bug like #1523.
MyBatis-Plus 的 saveBatch 方法在批量插入数据时可能会出现 "Too many keys are generated. There are only 13 target objects. You either specified a wrong keyProperty or encountered a driver bug" 的错误。这是因为在批量插入数据时,数据库可能会生成多余的自增主键。解决方法如下:
1. 修改 keyProperty 配置: 如果你使用了 keyProperty 属性,请确保你配置了正确的属性名称,并且这个属性能够被正确的自增主键覆盖
2. 批量插入数据前关闭主键自动生成:通过使用`@TableField(fill = FieldFill.INSERT)`可以在插入数据前关闭主键自动生成
3. 批量插入数据时关闭主键返回:Mybatis Plus会在批量插入时会自动返回主键给实体类,这时我们可以关闭这个功能(useGeneratedKeys = false)
4. 解决驱动问题: 这个错误也可能是由于数据库驱动的问题导致的,可以试着升级驱动版本.
这四种方法是解决该问题的常用方法,可以根据实际情况进行选择。
阅读全文