Mybatis:Invalid bound statement (not found)问题困扰

16 篇文章 1 订阅

Mybatis的配置方法可以见以下链接

https://blog.csdn.net/quan278905570/article/details/97791559

这里说明一下确定配置正确的情况下出现“Invalid bound statement (not found)”问题。

问题描述:

MemberDAO.java文件内容如下

package com.gszh.wmcp.project.weixinweb.dao;

import com.gszh.wmcp.project.weixin.model.Member;

public interface MemberDAO {

	public Member getMember(String Openid);
}

MemberDAOMapper.xml文件内容如下:

<?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.gszh.wmcp.project.weixinweb.dao.MemberDAO">

	 <select id="getMember" resultType="com.gszh.wmcp.project.weixin.model.Member">
		SELECT * FROM t_member 
		where Openid=#{Openid} limit 1
	</select> 	 
</mapper>

调用方法的内容如下:

	@Autowired
	private MemberDAO memberDAO;

	@RequestMapping(value = "/AddMember", method = RequestMethod.POST)
	@ResponseBody
	public ResultMsg AddMember() {
		if (memberDAO.getMember("123") == null) {
			// memberDAO.addMember(member);
		} else {
			// memberDAO.updateMember(member);
		}
		return resultMsg;
	}

以上配置正确,没有问题。但是系统报错

Invalid bound statement (not found): com.gszh.wmcp.project.weixinweb.dao.MemberDAO.getMember

提示说明没有正确找到方法getMember的xml映射。

反复排查和上网搜索了很久,还是没有找到真正原因。这个问题困扰了整整3天。最后解决了,不得不记录一下,免的下次继续犯错。。

解决方案:

在另一个DAO.java文件中发现了问题,此DAO包含了5个接口方法,但对应的Mapper.xml文件却只有前2个。

package com.gszh.wmcp.project.weixinweb.dao;

import java.util.List;

import com.gszh.wmcp.project.weixin.model.BillSend;

public interface WXwebDAO {

	// 获取账单列表
	public List<BillSend> getBillSendList();

	// 获取指定用户账单列表
	public List<BillSend> getBillSendListByArchID(List<String> ids);

	// 获取首页列表
	public List<WebSlide> getWebSlides(String GroupName);

	// 获取页面数据
	public WebPage getWebPages(@Param("PageCode") String PageCode);

	// 获取文章列表
	public List<WebArticle> getArticles(@Param("ClassName") String ClassName);

}

WXwebDAOMapper.xml文件内容

<?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.gszh.wmcp.project.weixinweb.dao.WXwebDAO">
	<!-- 微信缴费相关字段信息 --> 
	 <resultMap type="com.gszh.wmcp.project.weixin.model.BillSend" id="BillSend"> 
		<result column="Bill_ID" jdbcType="INTEGER" property="BillID"/>
	    <result column="Bill_ArchNo" jdbcType="VARCHAR" property="BillArchNo"/>
	    <result column="Bill_UserName" jdbcType="VARCHAR" property="BillUserName"/>
	    <result column="Bll_WeixinNo" jdbcType="VARCHAR" property="BllWeixinNo"/>
	    <result column="Bill_Address" jdbcType="VARCHAR" property="BillAddress"/>
	    <result column="Bill_Arrears_Count" jdbcType="VARCHAR" property="BillArrearsCount"/>
	    <result column="Bill_Arrears_fee" jdbcType="VARCHAR" property="BillArrearsfee"/>
	    <result column="Bill_AddDate" jdbcType="VARCHAR" property="BillAddDate"/>
	    <result column="Bill_IsSend" jdbcType="VARCHAR" property="BillIsSend"/>
	    <result column="Bill_Month" jdbcType="VARCHAR" property="BillMonth"/>
	</resultMap> 
	
	<!-- 查询微信库账单列表 2019-07-29 create -->
	<select id="getBillSendList" resultMap="BillSend" parameterType = "map">
		SELECT tbs.Bill_UserName, tbs.Bill_ArchNo, tbs.Bll_WeixinNo, tbs.Bill_Address,
		       tbs.Bill_Arrears_Count, tbs.Bill_Arrears_fee, tbs.Bill_AddDate,
		       tbs.Bill_IsSend, tbs.Bill_Month,tbs.Bill_ID
		  FROM T_BillSend tbs
		WHERE tbs.Bill_IsSend='0'		
	</select>
	
	<!-- 查询微信库账单列表 2019-08-13 create -->
	<select id="getBillSendListByArchID" resultMap="BillSend">
		SELECT tbs.Bill_UserName, tbs.Bill_ArchNo, tbs.Bll_WeixinNo, tbs.Bill_Address,
		       tbs.Bill_Arrears_Count, tbs.Bill_Arrears_fee, tbs.Bill_AddDate,
		       tbs.Bill_IsSend, tbs.Bill_Month,tbs.Bill_ID
		  FROM T_BillSend tbs
		WHERE tbs.Bill_IsSend='0' and tbs.Bill_ArchNo in
		  <foreach item="item" index="index" collection="list"
		      open="(" separator="," close=")">
		        #{item}
  		</foreach>		
	</select>
</mapper>

某个DAO和Mapper.xml文件没有一一对应,导致影响了其他mapper的正常映射,但系统的报错并不能定位到出错的mapper文件,还需自己去一一检查,才能找到问题所在。这个漏写的xml方法,应该是我当时没有完成的工作,隔几天再打开的时候发现运行报错,走了不少弯路。谨记。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奋斗鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值