当前位置: 首页 > news >正文

maven整合ssm项目中报org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)

 

在maven整合ssm框架分模块开发中,遇到的异常。

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.ten.e3shop.mapper.TbItemMapper.selectByPrimaryKey

at org.apache.ibatis.binding.MapperMethod$SqlCommand.<init>(MapperMethod.java:189)
at org.apache.ibatis.binding.MapperMethod.<init>(MapperMethod.java:43)
at org.apache.ibatis.binding.MapperProxy.cachedMapperMethod(MapperProxy.java:58)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:51)
at com.sun.proxy.$Proxy33.selectByPrimaryKey(Unknown Source)
at com.ten.e3shop.service.impl.ItemServiceImpl.findItemById(ItemServiceImpl.java:20)
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)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:302)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:281)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:208)
at com.sun.proxy.$Proxy35.findItemById(Unknown Source)
at com.ten.e3shop.controller.ItemController.getItemById(ItemController.java:25)
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)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:222)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:814)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:737)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:969)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:860)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:845)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:121)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)

一般,出现这个绑定错误的原因是使用mapper映射接口,但是在mapper接口文件同目录下找不到mappe映射xml文件。

maven整个ssm项目,使用了模块化架构,在dao层模块中,mapper映射类接口和映射文件是放在同一个目录下的。但是实际上在maven项目的dao模块的编译目录下xxx-dao\target\classes\com\xxx\xxx\mapper只有class文件,而xml文在xxx-dao\src\main\java\com\xxx\xxx\mapper目录下的。这才导致了不在同一个目录下,出现了binding异常。

解决方法是:

1,可以在src/main/resources下建立一个与xml文件所在的包同名的包,将映射xml文件拷贝到这个包下。

2,在dao模块的pom.xml文件中,将src/main/java配置为资源目录,并包含进模块任意目录下的xml文件等。

  <build>
  <resources>
  <resource>
  <directory>src/main/java/</directory>
  <includes>
  <include>**/*.properties</include>
  <include>**/*.xml</include>
  </includes>
  <filtering>false</filtering>
  </resource>
  </resources>

  </build>

这样配置会使得src/main/resources目录不再是资源目录,如果需要可以配置这个目录也为资源目录。一般在dao模块中不需要使用配置类文件,所以也没有这个必要。

相关文章:

  • dubbo简介
  • FastDFS简介
  • redis集群
  • solr集群
  • ssm框架web项目配置全局异常处理
  • ActiveMQ
  • 删除数据库重复记录
  • session共享问题
  • springmvc中ajax响应json报406错误的两种原因
  • 数据库切片
  • tomcat热部署
  • c++
  • linux系统编程
  • proc*c/c++简介
  • [one_demo_14]一个简单的easyui的demo
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • css的样式优先级
  • Git 使用集
  • node和express搭建代理服务器(源码)
  • PHP面试之三:MySQL数据库
  • Python_网络编程
  • RxJS: 简单入门
  • Vim Clutch | 面向脚踏板编程……
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 使用parted解决大于2T的磁盘分区
  • 算法-插入排序
  • 一份游戏开发学习路线
  • 正则学习笔记
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • 如何正确理解,内页权重高于首页?
  • ​一帧图像的Android之旅 :应用的首个绘制请求
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (10)STL算法之搜索(二) 二分查找
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (三)c52学习之旅-点亮LED灯
  • (十一)c52学习之旅-动态数码管
  • (十一)图像的罗伯特梯度锐化
  • ****Linux下Mysql的安装和配置
  • ***微信公众号支付+微信H5支付+微信扫码支付+小程序支付+APP微信支付解决方案总结...
  • .NET HttpWebRequest、WebClient、HttpClient
  • .NET 反射的使用
  • .NET 跨平台图形库 SkiaSharp 基础应用
  • .net 前台table如何加一列下拉框_如何用Word编辑参考文献
  • .net遍历html中全部的中文,ASP.NET中遍历页面的所有button控件
  • .Net高阶异常处理第二篇~~ dump进阶之MiniDumpWriter
  • .skip() 和 .only() 的使用
  • ::什么意思
  • @EnableWebMvc介绍和使用详细demo
  • [ vulhub漏洞复现篇 ] GhostScript 沙箱绕过(任意命令执行)漏洞CVE-2019-6116
  • [14]内置对象
  • [20170705]diff比较执行结果的内容.txt