BindingException: Parameter ‘orderId’ not found. Available parameters are [arg1, arg0, param1, param
分析:出现这个原因是因为sql中传入了两个及两个以上的参数
像之前那样写sql就会报这个错
@Insert("insert into order_traveller (orderId,travellerId)" +
" values(#{orderId},#{travellerId})")
void saveForeignKeyOT(Integer orderId, Integer travellerId);
报错的信息也说了,要使用传过来的arg参数。
应该改成这种形式
@Insert("insert into order_traveller (orderId,travellerId)" +
" values(#{arg0},#{arg1})")
void saveForeignKeyOT(Integer orderId, Integer travellerId);
还要注意参数的顺序
arg数组是按照实现层传过来的参数顺序。写反了一样会报错
iOrdersService.saveForeignKeyOT(orderId,travellerId);
如果顺序不对,就会报错完整性约束冲突异常,我的sql基于在一个外键表中加数据
MySQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails (`ssm`.`order_traveller`, CONSTRAINT `order_traveller_ibfk_1` FOREIGN KEY (`orderId`) REFERENCES `orders` (`id`))
; ]; Cannot add or update a child row: a foreign key constraint fails (`ssm`.`order_traveller`, CONSTRAINT `order_traveller_ibfk_1` FOREIGN KEY (`orderId`) REFERENCES `orders` (`id`)); nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails (`ssm`.`order_traveller`, CONSTRAINT `order_traveller_ibfk_1` FOREIGN KEY (`orderId`) REFERENCES `orders` (`id`))