我的异常信息:
Error updating database. Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for com.gx.mapper.AccountMapper.update
### Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for com.gx.mapper.AccountMapper.update
at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)
at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:200)
在刚开始使用mybatis的测试中,在mybatis的映射文件配置中配置如下
<mapper namespace="com.gx.mapper.AccountMapper">
<select id="selectAll" resultType="com.gx.model.Account">
select aid,aname,apass,a_nikename as anikename from account
select>
<select id="selectById" resultType="com.gx.model.Account">
select aid,aname,apass,a_nikename as anikename from account where aid=#{aid}
select>
<update id="update" parameterType="com.gx.model.Account">
update account set apass=#{apass} where aid=#{aid}
update>
<insert id="insert" parameterType="com.gx.model.Account">
INSERT INTO account(aname,apass,a_nikename)
VALUES(#{aname},#{apass},#{anikeName})
insert>
<delete id="delete" parameterType="java.lang.Integer">
delete from account where aid=#{aid}
delete>
mapper>
其中包括了五个sql的编写。测试过程中只有第一个selectAll的时候正常,其他情况都会报
Mapped Statements collection does not contain value for (namespace+id)的异常信息。
百度搜索总结。这方面的问题通常原因有四种:
1.mybatis的映射文件的命令空间与接口的全限定名不一致;
2有可能mybatis的映射文件名字与接口的类名字不一致;
3.还有一种情况就是接口声明的方法在映射文件里面没有。
4.使用maven项目打包的时候,是不能够将java包里面的mybatis的映射文件进行打包处理。这个时候需要手动在pom.xml中进行配置
<build>
<resources>
<resource>
<directory>src/main/javadirectory>
<includes>
<include>**/*.xmlinclude>
includes>
resource>
<resource>
<directory>src/main/resourcesdirectory>
<includes>
<include>*.xmlinclude>
includes>
resource>
resources>
build>
我这里是配置了两个资源。第一个是将java中的xml进行打包。但是之后发现resources目录下的资源文件没有被打包。所有我第二个是将
resources目录下的资源进行配置。
以上都没有解决的话,就只能是项目的代码没有被重新编译。使用maven 进行编译或打包。然后调试