异常记录——使用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,报异常的解决方法

Mybatis报无效的关系运算符异常

Mybatis映射文件错误Tomcat无法启动,也不报异常

springboot集成报错,想要集成tk.mybatis报错,反射方法异常

记录使用mybatis的<set><if></if></set>标签的一个坑

记录使用mybatis的<set><if></if></set>标签的一个坑