mybatis批量插入报错Parameter ‘id‘ not found. Available parameters are [entities, param1]

采用EasyCodeMybatisCodeHelper生成代码,调用其中的批量插入方法时,报错:
Parameter ‘id’ not found. Available parameters are [entities, param1]

方法平平无奇

//service
List<BoardConfig> entities = new ArrayList<>();
for(Map.Entry<String, Double> entry : params.entrySet()){
    String key = entry.getKey();
    if(isPropertie(key)) {
        BoardConfig config = new BoardConfig();
        config.setId(0);
        config.setBoardId(board.getId());
        config.setCode(key);
        config.setSetValue(Double.parseDouble(String.valueOf(entry.getValue())));
        entities.add(config);
    }
}
this.boardConfigDao.insertBatch(entities);

dao代码

int insertBatch(@Param("entities") List<BoardConfig> entities);

mapper文件代码

<insert id="insertBatch" keyProperty="id" useGeneratedKeys="true">
     insert into board_config(BOARD_ID, CODE, SET_VALUE, NOTE)
     values
     <foreach collection="list" item="entity" separator=",">
         (#{entity.boardId}, #{entity.code}, #{entity.setValue}, #{entity.note})
     </foreach>
 </insert>

看了以下参考文章,修改后问题解决。但作者没有说明是什么原因。也许是BUG吧。
mybatis批量插入报错Parameter ‘id‘ not found. Available parameters are [entities, param1]

修改方法抄录如下:

int insertBatch(@Param(“entities”) List entities);

改为
int insertBatch(List entities);



(#{entity.ruleId}, #{entity.name}, #{entity.code}, #{entity.value}, #{entity.description},
#{entity.sortKey})

改为

(#{entity.ruleId}, #{entity.name}, #{entity.code}, #{entity.value}, #{entity.description},
#{entity.sortKey})

posted on 2023-08-17 20:21  左直拳  阅读(0)  评论(0)    收藏  举报  来源

导航