Spring扫面路径配置不全导致异常 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): 的原因
运行Junit测试类
package cn.bgodata.x.zero.service; import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import cn.bgodata.x.zero.core.model.Cube;
import cn.bgodata.x.zero.core.model.Z0Dimension;
import cn.bgodata.x.zero.dao.CubeDAO;
import cn.bgodata.x.zero.dao.DimensionDAO; @RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({"classpath:spring/spring-dao.xml",
"classpath:spring/spring-service.xml"})
public class ServiceTestClass { @Autowired
private DimService dimService; @Autowired
private CubeService cubeService; @Autowired
private CubeDAO cubeDao; @Autowired
private DimensionDAO dimDao; @Test
public void TXtestTX() throws Exception {
Cube c1 = new Cube();
c1.setWormholeId(80001);
c1.setWormholeCode("great cube");
c1.setName("切片与切块Cube"); Z0Dimension dim = new Z0Dimension();
dim.setWormholeId(80999);
dim.setWormholeCode("multi-dimensional domain: 维度");
dim.setName("行政划分");
dim.setCube(c1); dimService.saveDim(dim);
cubeService.saveCube(c1, false);
} }
抛出异常
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): cn.bgodata.x.zero.service.DimService.save
at org.apache.ibatis.binding.MapperMethod$SqlCommand.<init>(MapperMethod.java:196)
at org.apache.ibatis.binding.MapperMethod.<init>(MapperMethod.java:44)
at org.apache.ibatis.binding.MapperProxy.cachedMapperMethod(MapperProxy.java:59)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:52)
at com.sun.proxy.$Proxy19.save(Unknown Source)
at cn.bgodata.x.zero.service.ServiceTestClass.TXtestTX(ServiceTestClass.java:36)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
检查service接口及实现、dao接口及实现、dimension-mapper.xml、cube-mapper.xml,以及源码和配置文件路径,皆无误

package cn.bgodata.x.zero.dao;
import cn.bgodata.x.zero.core.model.Cube;
public interface CubeDAO {
public int save(Cube cube);
}
package cn.bgodata.x.zero.dao;
import java.util.List;
import cn.bgodata.x.zero.core.model.Z0Dimension;
public interface DimensionDAO {
public List<Z0Dimension> loadAllDimensions();
public int saveDim(Z0Dimension dim);
}
package cn.bgodata.x.zero.service;
import cn.bgodata.x.zero.core.model.Cube;
public interface CubeService {
public void saveCube(Cube c, boolean throwExFlag);
}
package cn.bgodata.x.zero.service; import cn.bgodata.x.zero.core.model.Z0Dimension;
import cn.bgodata.x.zero.dao.DimensionDAO; public interface DimService { public void saveDim(Z0Dimension dimension); public DimensionDAO getDimensionDAO();
}
package cn.bgodata.x.zero.service.impl; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import cn.bgodata.x.zero.core.model.Cube;
import cn.bgodata.x.zero.dao.CubeDAO;
import cn.bgodata.x.zero.service.CubeService; @Service
public class CubeServiceImpl implements CubeService { @Autowired
private CubeDAO cubeDao; // @Override
public void saveCube(Cube c, boolean throwExFlag) { System.out.println("save cube count is [" + cubeDao.save(c) + "]"); if (throwExFlag) {
throw new RuntimeException("test tx ...");
} } }
package cn.bgodata.x.zero.service.impl; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import cn.bgodata.x.zero.core.model.Z0Dimension;
import cn.bgodata.x.zero.dao.DimensionDAO;
import cn.bgodata.x.zero.service.DimService; @Service
public class DimServiceImpl implements DimService { @Autowired
private DimensionDAO dimDao; // @Override
public void saveDim(Z0Dimension dimension) {
System.out.println("save dimension count is [" + dimDao.saveDim(dimension) + "]");
} @Override
public DimensionDAO getDimensionDAO() {
// TODO Auto-generated method stub
return dimDao;
} }
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.bgodata.x.zero.dao.CubeDAO">
<insert id="save" parameterType="Cube">
insert ignore into WORMHOLE_CUBE (wormhole_id, wormhole_code, name)
values (#{wormholeId}, #{wormholeCode}, #{name})
</insert>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.bgodata.x.zero.dao.DimensionDAO">
<select id="loadAllDimensions" resultType="Z0Dimension">
select
wc.name 'cube.name',
wc.wormhole_code 'cube.wormhole_code',
wc.wormhole_id 'cube.wormhole_id',
wd.name,
wd.wormhole_code,
wd.wormhole_id
from WORMHOLE_CUBE wc inner join WORMHOLE_DIMENSION wd
on wc.wormhole_id = wd.cube_id
</select> <insert id="saveDim" parameterType="Z0Dimension">
insert ignore into WORMHOLE_DIMENSION (wormhole_id, wormhole_code, name, cube_id)
values (#{wormholeId}, #{wormholeCode}, #{name}, #{cube.wormholeId})
</insert>
</mapper>
导致问题的原因在 spring-dao.xml

spring-dao.xml中配置的DAO接口扫描路径不是完全包名(导致异常的原因)

修改 spring-dao.xml
将扫描路径配置为DAO接口所在包的全路径,问题解决。

Spring扫面路径配置不全导致异常 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): 的原因的更多相关文章
- 异常 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 解决方案
原来是因为 AssetsMapper.xml 不知道为什么不见了,导致这个异常,在启动项目时的启动任务里调用到了它,然后因为没有这个xml,所以抛出异常 启动信息: C:\extend\Develop ...
- 7. mybatis:mapper-locations: 路径放在java路径下报错:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
解决方案:在pom.xml文件中的<build>标签内加上以下的<resources>内容即可 <build> <resources> <reso ...
- IDEA异常解决: org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
有时候解决问题不仅仅是解决问题.-----jstarseven 最近因为开发需要,需要搭建一个ssm开发框架,采用了开发工具IDEA. 整合完了SSM开发框架之后,发布的时候出现org.apache. ...
- spring boot集成mybatis-plus插件进行自定义sql方法开发时报nested exception is org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):
spring boot集成mybatis-plus插件进行自定义sql方法开发时报nested exception is org.apache.ibatis.binding.BindingExcept ...
- ssm项目dao层方法异常:org.apache.ibatis.binding.BindingException: Invalid bound statement
在IntelliJ IDEA中用ssm框架搭建了一个demo项目,在执行到dao层方法时抛出这个异常: org.apache.ibatis.binding.BindingException: Inva ...
- mybatis配置时出现org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
如果出现: org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 一般的原因是Mapper i ...
- Spring boot结合mybatis开发的报错:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
错误:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found),经过排查确定是没有找到xml的原因 ...
- 【spring boot Mybatis】报错:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.newhope.interview.dao.UserMapper.add
报错如下: org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.newhope.i ...
- spring boot 集成 mybatis 单元测试Dao层 控制台报错:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):
最近帮同学做毕业程序,采用后端spring boot + mybatis + H2,将框架搭好进行各层的单元测试时,在dao层就出现了错,如图 于是在网上找各种资料,有的说是xml文件和接口没有一一对 ...
随机推荐
- 关于tensorflow conv2d卷积备忘的一点理解
**************input************** [[[[-0.36166722 0.04847232 1.20818889 -0.1794038 -0.53244466] [ ...
- CentOS7 nexus 3 搭建maven或gradle 私有代理服务器
1.下载nexus 3, 选择与操作系统对应版本 2.解压nexus并运行: 3.在浏览器中输入http://192.168.127.128:8081/,并以amdin为用户名,以admin123为密 ...
- shiro源码篇 - 疑问解答与系列总结,你值得拥有
前言 开心一刻 小明的朋友骨折了,小明去他家里看他.他老婆很细心的为他换药,敷药,然后出去买菜.小明满脸羡慕地说:你特么真幸福啊,你老婆对你那么好!朋友哭得稀里哗啦的说:兄弟你别说了,我幸福个锤子,就 ...
- man exportfs(exportfs命令中文手册)
本人译作集合:http://www.cnblogs.com/f-ck-need-u/p/7048359.html exportfs() System Manager's Manual exportfs ...
- 第三讲 smart qq 登录成功后获取 vfwebqq ,psessionid,hash
public static void Login_GetPHV() { string urldata = "{\"ptwebqq\":\"#{ptwebqq}\ ...
- 【worker】js中的多线程
因为下个项目中要用到一些倒计时的功能,所以就提前准备了一下,省的到时候出现一下界面不友好和一些其他的事情.正好趁着这个机会也加深一下html5中的多线程worker的用法和理解. Worker简介 J ...
- [nodejs] nodejs开发个人博客(六)数据分页
控制器路由定义 首页路由:http://localhost:8888/ 首页分页路由:http://localhost:8888/index/2 /** * 首页控制器 */ var router=e ...
- Unix awk的流程控制BEGIN和END的讲解
你可能对Unix比较熟悉,但你可能对Unix awk很陌生,这一点也不奇怪,的确,与其优秀的功能相比,awk还远没达到它应有的知名度. 流程控制语句是任何程序设计语言都不能缺少的部分.任何好的语言都有 ...
- java实现无序数组结构
一.数组的2种定义方式 数据类型 [] 数组名称 = new 数据类型[数组长度]; 这里 [] 可以放在数组名称的前面,也可以放在数组名称的后面,一般放在名称的前面 数据类型 [] 数组名称 = ...
- Oracle+mybatis实现对数据的简单增删改查
第一步:--创建一个表空间:名字叫 mybatis,建在D盘下的date文件夹下: 第二步:创建用户,名字叫 lisi ,密码为 :123456 第三步:给用户授权: 第四步:我们在 li ...