mybatis报错 Invalid bound statement (not found)的解决方案

在使用mybatis进行简单查询时报了一个这样的错:

org.apache.ibatis.binding.BindingException:Invalid bound statement (not found): org.lujx.dao.StudentDAO.getStudentById
at org.apache.ibatis.binding.MapperMethod$SqlCommand.<init>(MapperMethod.java:223)
at org.apache.ibatis.binding.MapperMethod.<init>(MapperMethod.java:48)
at org.apache.ibatis.binding.MapperProxy.cachedMapperMethod(MapperProxy.java:59)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:52)
at com.sun.proxy.$Proxy12.getStudentById(Unknown Source)
at org.lujx.service.StudentService.getStudent(StudentService.java:15)
at org.lujx.test.StudentServiceTest.testGetStudent(StudentServiceTest.java:22)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

错误表示的是mapper.xml和DAO.java文件没有对应绑定。

首先检查直接关联的两个文件,本例子中的是StudentDAO.java和StudentDAO.xml两个文件,其中的xml文件中namespace要对应DAO中的包名类名所在的准确位置,其次还要注意字符串的格式。(位置映射正确是前提)

<mapper namespace="org/lujx/dao/StudentDAO">   这种格式是错的 
<select id="getStudentById" parameterType="int" resultType="Student">
select * from students where id=#{id}
</select>
</mapper> 
应该写成namespace="org.lujx.dao.StudentDAO"   

一般情况到这里就解决了,如果还是有报错,还要检查一下几个方面(本人从网上的前辈经验总结的):

1.检查方法的命名是否一致

xml文件的select标签的id对应dao文件的方法名,两者必须完全一致

2.检查参数和返回值是否一致

xml文件中的parameterType要和dao文件方法的传入参数一致;dao文件中的返回值要有xml中的resultMap或者resultType对应,请注意,如果没有自定义的resultMap,请注意返回值格式。

3.确认引入xml配置文件是否正确(例子如下)

<property name="configLocation" value="classpath:org/lujx/configuration/mybatis-config.xml"/>
<property name="mapperLocations" value="classpath:org/lujx/mappers/**/*.xml"></property>

<property name="typeAliasesPackage" value="org/lujx/model"></property>

ps:以上是配置sqlSessionFactory是的配置项,也可以在mybatis的配置文件里配置,主要注意的是文件路径


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值