采用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})