Springboot mybatis集成 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)

今天在使用mybatis集成Spring时遇到了一个曾经遇到过的问题,先看一下使用swagger测试返回的错误
在这里插入图片描述一般我们看到"status": 500的时候自然能够想到是后台除了问题,这里说在你的Mapper中找不到getAllStocks的方法,很显然你是能够在你的代码中找到这个方法的。那么应该就Mapper的问题了。
首先对比mapper.xml中的namespace有没有问题

<?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="com.example.stock.mapper.StockMapper" >
  <resultMap id="BaseResultMap" type="com.example.stock.model.Stock" >
    <!--
      WARNING - @mbg.generated
    -->
    <id column="id" property="id" jdbcType="INTEGER" />
    <result column="stock_name" property="stockName" jdbcType="VARCHAR" />
    <result column="price" property="price" jdbcType="REAL" />
    <result column="rating" property="rating" jdbcType="INTEGER" />
    <result column="category" property="category" jdbcType="VARCHAR" />
    <result column="description" property="description" jdbcType="VARCHAR" />
    <result column="deleted" property="deleted" jdbcType="BIT" />
  </resultMap>
</mapper>

没有问题之后再检查方法名又没有对上

  <select id="getAllStocks" resultMap="BaseResultMap">
    SELECT * FROM stock
  </select>

发现都没有问题时,百度,Google,都只找到了以上几种可能方案,最后的最后只能去问老师,然后居然发现是在application.properties中少了一段关于mybatis的配置,如下:

mybatis.typeAliasesPackage=com.test.shiro.entity
mybatis.mapperLocations=classpath:mapper/*.xml

主要是下面一句配置,是通过路径去对应mapper.xml中的mapper文件的。加上之后才解决问题。
另外此处加一句,如果有如下错误

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.example.stock.mapper.StockMapper' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

并且项目没有运行起来则是没有在启动类中添加注解

@MapperScan(basePackages = "com.example.stock.mapper")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值