报错:无效的列类型: 1111
生活随笔
收集整理的這篇文章主要介紹了
报错:无效的列类型: 1111
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
情況一:
報錯如下:
可以看出時standardValue字段出現了問題。
錯誤代碼:
@Override
public Result edit(ProductCheckItem productCheckItem) {
UserDTO user = SessionCache.get();
productCheckItem.setUpdateTime(new Date());
productCheckItem.setUpdateUser(user.getUsername());
int i = productCheckItemDao.updateByPrimaryKey(productCheckItem);
if (i > 0) {
return Result.operating("修改成功", true, ResultCode.SUCCESS);
} else {
return Result.operating("修改失敗", false, ResultCode.SUCCESS);
}
}
前端傳遞過來的參數:
難道是當standardValue為null時無法修改?
解決辦法:將updateByPrimaryKey改為updateByPrimaryKeySelective,問題解決。
當用insert()插入時也會報這個錯誤,此時應該改為insertSelective().
情況二:
報錯:無效的列類型
錯誤代碼:
service
growMain.getSeedingRelList().forEach(rel -> {
Map relMap = new HashMap();
relMap.put("seedingId", rel.get("id"));
relMap.put("plantId", growMain.getId());
relMap.put("transplantingNum", rel.get("transplantingNum"));
relMap.put("transplantingType", rel.get("transplantingType"));
growMainMapper.insertSeedingRel(relMap);
});
dao
int insertSeedingRel(Map map);
mapper.xml
<insert id="insertSeedingRel" parameterType="java.util.Map">
INSERT INTO b_plant_seeding_rela(plant_id, seeding_id, transplanting_num, transplanting_type) VALUES (#{plantId}, #{seedingId}, #{transplantingNum}, #{transplantingType})
</insert>
錯誤原因:如果前端沒有傳遞transplantingNum和transplantingType,那么這兩個值都為null,插入的時候就會報無效的列類型
解決辦法:如果為null,則轉為空字符串。用insertSelective可以避免將屬性值為null的字段插入數據庫,但是如果是用sql插入,那么就需要將null轉為空字符串。
代碼如下:
growMain.getSeedingRelList().forEach(rel -> {
Map relMap = new HashMap();
relMap.put("seedingId", rel.get("id"));
relMap.put("plantId", growMain.getId());
relMap.put("transplantingNum", rel.get("transplantingNum") == null ? "" : rel.get("transplantingNum"));
relMap.put("transplantingType", rel.get("transplantingType") == null ? "" : rel.get("transplantingType"));
growMainMapper.insertSeedingRel(relMap);
});
總結
以上是生活随笔為你收集整理的报错:无效的列类型: 1111的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数三角形
- 下一篇: HTML5 的段落首行缩进