异常记录——使用Mybatis报BindingException
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了异常记录——使用Mybatis报BindingException相关的知识,希望对你有一定的参考价值。
参考技术A 业务场景:车辆表,需要更新指定编号车辆的设备Id(编号和设备ID均非主键),因而在对应的mapper.xml中自定义了SQL语句,结果调用对应接口时爆出异常apache的ibatis将原因说的很清楚:Parameter 'deviceNO' not found. Available parameters are [deviceNo, deviceId, param1, param2] ,没找到xml里使用占位符表示的参数(#deviceNO),能用的参数有deviceNo、deviceId等,很明显是发生了拼写错误
xml:
Mapper接口:
更改参数名使xml和Mapper接口里一致即可
一个字母的大小写错误,不仅仅是引发了BindingException异常,而且它还暴露了我极大的缺点:
一定要注意class与yml、xml之间的拼写错误!
Mybatis映射文件错误Tomcat无法启动,也不报异常
查了一下网上的资料,需要自己重写一下SqlSessionFactoryBean中的buildSqlSessionFactory方法,并替换原有的SqlSessionFactoryBean
import java.io.IOException; import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.SqlSessionFactoryBean; import org.springframework.core.NestedIOException; public class BeanFactory extends SqlSessionFactoryBean { @Override protected SqlSessionFactory buildSqlSessionFactory() throws IOException { try{ return super.buildSqlSessionFactory(); }catch(NestedIOException e){ e.printStackTrace(); throw new NestedIOException("Failed to parse mapping resource:",e.getCause()); } } }
<bean id="sqlSessionFactory" class="com.izhenglan.merchant.test.bean.BeanFactory">
<property name="dataSource" ref="dataSource"/>
<property name="configLocation" value="classpath:config/mybatis-config.xml"/>
<property name="mapperLocations" value="classpath*:mapper/*.xml"/>
</bean>
以上是关于异常记录——使用Mybatis报BindingException的主要内容,如果未能解决你的问题,请参考以下文章
使用MyBatis查询 返回类型为int,但是当查询结果为空NULL,报异常的解决方法
springboot集成报错,想要集成tk.mybatis报错,反射方法异常