SSM整合无法加载mapper.xml的问题

1 篇文章 0 订阅

SSM整合无法加载mapper.xml的问题

用idea整合SSM框架,在整合mybatis时,使用注解方式可以运行,在更改为xml配置方式后,一直报错,代码仔细检查没有问题,spring 配置文件已经正确声明mapper.xml文件位置,mapper.xml文件和对应接口文件的namespace以及id都完全正确的情况下,可以访问项目,涉及持久层操作报错500,提示未找到接口中对应方法,错误如下:

HTTP状态 500 - 内部服务器错误

类型 异常报告

消息 Request processing failed; nested exception is org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.nl.dao.AccountMapper.findById

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.nl.dao.AccountMapper.findById
	org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014)
	org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:626)
	org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
	org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
	org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)

原因:项目没有加载mapper.xml文件,原因是maven工程默认不打包工程里面的配置文件,例如xml,peoperties等,因此程序运行时在本地找不到配置文件,查看项目编译的文件夹中是否有mapper.xml文件。
具体操作:打开磁盘中该项目文件夹----target目录-----访问同项目名称的文件夹--------WEB-INF目录----------classes目录,然后根据自己项目的mapper.xml文件位置查找。

在这里插入图片描述解决方法:
在maven项目的pom文件中加入以下代码,让maven加载相关文件

<build>
    <!-- 如果不添加此节点mybatis的mapper.xml文件都会被漏掉。 -->

    <resources>
      <resource>
        <!--填写主文件夹 -->
        <directory>src/main/java</directory>
        <includes>
          <!--使打包包含这2种配置文件 -->
          <include>**/*.properties</include>
          <include>**/*.xml</include>
        </includes>
        <!--不使用过滤器 -->
        <filtering>false</filtering>
      </resource>

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

  </build>

参考:https://blog.csdn.net/qq_15038565/article/details/102761116
完成后可以成功运行

在父子maven工程中以上方法并不适用,父工程install时子模块中的mapper文件依然不会打包进去,推荐将mapper文件统一放在resource资源目录下并且在配置文件中配置mapperlocations

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值