运行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): 的原因的更多相关文章

  1. 异常 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 解决方案

    原来是因为 AssetsMapper.xml 不知道为什么不见了,导致这个异常,在启动项目时的启动任务里调用到了它,然后因为没有这个xml,所以抛出异常 启动信息: C:\extend\Develop ...

  2. 7. mybatis:mapper-locations: 路径放在java路径下报错:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)

    解决方案:在pom.xml文件中的<build>标签内加上以下的<resources>内容即可 <build> <resources> <reso ...

  3. IDEA异常解决: org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)

    有时候解决问题不仅仅是解决问题.-----jstarseven 最近因为开发需要,需要搭建一个ssm开发框架,采用了开发工具IDEA. 整合完了SSM开发框架之后,发布的时候出现org.apache. ...

  4. 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 ...

  5. ssm项目dao层方法异常:org.apache.ibatis.binding.BindingException: Invalid bound statement

    在IntelliJ IDEA中用ssm框架搭建了一个demo项目,在执行到dao层方法时抛出这个异常: org.apache.ibatis.binding.BindingException: Inva ...

  6. mybatis配置时出现org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)

    如果出现: org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 一般的原因是Mapper i ...

  7. Spring boot结合mybatis开发的报错:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)

    错误:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found),经过排查确定是没有找到xml的原因 ...

  8. 【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 ...

  9. spring boot 集成 mybatis 单元测试Dao层 控制台报错:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):

    最近帮同学做毕业程序,采用后端spring boot + mybatis + H2,将框架搭好进行各层的单元测试时,在dao层就出现了错,如图 于是在网上找各种资料,有的说是xml文件和接口没有一一对 ...

随机推荐

  1. vue-15-vuex-store的用法

    vue-16-vuex 1, 介绍 对 vue 进行状态管理的, 集中存储所有组件的所有状态, 解决多个组件共享数据的问题. 即, 所有组件可以拿到同样的状态, 组件间共享数据 2, 在之前进行数据交 ...

  2. Jenkins入门之任务基本操作

    首先先简单讲一下Jenkins构建任务各种图标的含义 我的主界面有以下构建任务,这里前两列都是图标,第一列为构建的状态,前面已经讲过蓝色代表成功,红色代表失败.当然那是针对一次构建,一个构建任务可能有 ...

  3. Go语言学习笔记(五) [函数]

    日期:2014年7月29日   1.函数定义:func (p type) funcname(q int) (r,s int) {return 0,0 }     func: 保留字,用于定义一个函数 ...

  4. Django 系列博客(四)

    Django 系列博客(四) 前言 本篇博客介绍 django 如何和数据库进行交互并且通过 model 进行数据的增删查改 ORM简介 ORM全称是:Object Relational Mappin ...

  5. SpringBoot学习(八)-->SpringBoot之过滤器、监听器

    本文将直接使用@WebFilter和@WebListener的方式,完成一个Filter 和一个 Listener. 过滤器(Filter)和 监听器(Listener)的注册方法和 Servlet ...

  6. [转]Angular4 数据请求 POST、GET

    本文转自:https://blog.csdn.net/dailuwen/article/details/79375980 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog ...

  7. [心得] 如何利用liquibase進行資料庫版本控制 - 基礎觀念

    前言 - 會寫這篇除了是要記錄一下使用的過程之外,也是發現到網路上找來的教學幾乎都是跟其它環境做結合 比較沒有單純利用command進行的流程.也沒有整體觀念的介紹,所以將我所理解的整理分享給大家. ...

  8. 从零开始学安全(三)●黑客常用的windows端口

    端口可选1-65536 1-1024 预保留端口 留给windows系统服务的 下面是常见的端口对应的服务 1 TCP Port Service Multiplexer 传输控制协议端口服务多路开关选 ...

  9. C#: 向Word插入排版精良的文本框

    Text Box(文本框)是Word排版的工具之一.在Word文档正文的任何地方插入文本框,可添加补充信息,放在合适的位置,也不会影响正文的连续性.我们可以设置文本框的大小,线型,内部边距,背景填充等 ...

  10. C#设计模式之三抽象工厂模式(AbstractFactory)【创建型】

    一.引言 写了3篇有关设计模式的文章了,大家有了些反馈,说能从中学到一些东西,我感到很欣慰,那就继续努力.今天我要写第四个模式了,该模式叫抽象工厂.上一篇文章我们讲了[工厂方法]模式,它是为了解决[简 ...