设为首页 收藏本站
查看: 1057|回复: 0

[经验分享] Spring扫面路径配置不全导致异常 org.apache.ibatis.binding.BindingException: Invalid bound sta

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2017-12-25 08:36:43 | 显示全部楼层 |阅读模式
  运行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>
  @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,以及源码和配置文件路径,皆无误
DSC0000.png

  

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>
  @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>
  @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 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 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 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
DSC0001.png

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

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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-427715-1-1.html 上篇帖子: Apache 使用gzip、deflate 压缩页面加快网站访问速度 下篇帖子: Apache Ignite
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表