异常信息
org.apache.ibatis.binding.BindingException
nested exception is org.apache.ibatis.binding.BindingException: Parameter 'deviceNO' not found. Available parameters are [deviceNo, deviceId, param1, param2]
场景回溯
业务场景:车辆表,需要更新指定编号车辆的设备Id(编号和设备ID均非主键),因而在对应的mapper.xml中自定义了SQL语句,结果调用对应接口时爆出异常
当然可以直接使用Mybatis-plus的EntityWrapper,这样做虽然方便,但是第一影响性能,第二造成职责划分不清(SQL的拼装属于dao层,它从来就不该在Service层完成)
原因排查
apache的ibatis将原因说的很清楚:Parameter 'deviceNO' not found. Available parameters are [deviceNo, deviceId, param1, param2] ,没找到xml里使用占位符表示的参数(#{deviceNO}),能用的参数有deviceNo、deviceId等,很明显是发生了拼写错误
xml: