使用tk.mybatis自带批量插入方法insertList出现No setter found for the keyProperty ‘id‘错误

在使用tk.mybatis的insertList方法进行批量插入时遇到错误:'No setter found for the keyProperty 'id' in 'com.xxx.Category'。问题源于数据表主键字段名与实体类属性名不一致。解决方案包括更改数据表主键字段名为'id',或者在CategoryMapper接口中重写insertList方法,将keyProperty设为'categoryId'。
摘要由CSDN通过智能技术生成

使用tk.mybatis自带批量插入方法insertList(List recordList); 时,出现错误:

nested exception is org.apache.ibatis.executor.ExecutorException: Error getting generated key or setting result to parameter object. Cause: org.apache.ibatis.executor.ExecutorException: No setter found for the keyProperty ‘id’ in ‘com.xxx.Category’.

原因可能是id的问题,查看insertList源码

/**
 * 批量插入,支持批量插入的数据库可以使用,例如MySQL,H2等,另外该接口限制实体包含`id`属性并且必须为自增列
 *
 * @param recordList
 * @return
 */
@Options(useGeneratedKeys = true, keyProperty = "id")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 当然,这是MyBatis-Plus批量插入的示例代码: ``` List<User> userList = new ArrayList<>(); // 构造数据 for (int i = 0; i < 100; i++) { User user = new User(); user.setName("test" + i); user.setAge(i); userList.add(user); } // 批量插入 boolean result = new User().insertBatch(userList); ``` 在这段代码中,我们首先构造了一个`User`对象的列表,然后使用`insertBatch`方法执行批量插入。 请注意,在使用这个方法之前,请确保安装了MyBatis-Plus,并已经正确配置了数据源和MyBatis-Plus。 ### 回答2: mybatis-plus是基于mybatis的增强工具,提供了许多简化操作数据库的方法。下面是使用mybatis-plus实现批量插入的示例代码: 1. 首先,需要准备好实体类,假设我们有一个User实体类,包含id和name属性。 ```java public class User { private Long id; private String name; // 省略getter和setter方法 } ``` 2. 接下来,在数据库中创建user表。 3. 在mybatis的mapper层中定义批量插入方法。 ```java public interface UserMapper extends BaseMapper<User> { void batchInsert(List<User> userList); } ``` 4. 在UserMapper.xml文件中实现批量插入的SQL语句。 ```xml <insert id="batchInsert" useGeneratedKeys="true" keyProperty="id"> insert into user (name) values <foreach collection="list" item="item" separator=","> (#{item.name}) </foreach> </insert> ``` 5. 最后,在Service层中调用批量插入方法。 ```java @Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Override public void batchInsert(List<User> userList) { userMapper.batchInsert(userList); } } ``` 这样,就完成了使用mybatis-plus实现批量插入的步骤。你可以通过调用UserService的batchInsert方法批量插入User对象。 ### 回答3: mybatis-plus是一款开源的持久层框架,它在MyBatis的基础上进行了功能的扩展和增强,使得我们能更加便捷地进行数据库操作。在mybatis-plus中,批量插入操作可以通过使用`insertBatch`方法来实现。 首先,我们需要创建一个实体类,该实体类对应着我们要插入的数据表。假设我们要插入的数据表名称为`user`,并且包含`id`和`name`两个字段,可以定义一个对应的实体类如下: ```java public class User { private Long id; private String name; // 省略getter和setter方法 } ``` 接下来,在使用mybatis-plus进行数据库操作的Mapper接口中,定义一个批量插入方法,如下所示: ```java public interface UserMapper extends BaseMapper<User> { void insertBatch(List<User> userList); } ``` 在该方法中,我们需要使用`@Param`注解指定需要批量插入的对象集合。 最后,在业务层或者其他需要进行批量插入操作的地方,调用上述方法即可完成批量插入操作。示例如下: ```java @Autowired private UserMapper userMapper; public void insertUsers(List<User> userList) { userMapper.insertBatch(userList); } ``` 通过以上步骤,我们就可以使用mybatis-plus实现批量插入操作。当我们调用`insertUsers`方法,并传入一个用户对象集合,mybatis-plus会将该对象集合转换为一条SQL语句,从而实现数据的批量插入
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值