用mybatis的xml文件进行ORM模式,出现下面错误
nested exception is : Parameter 'id' not found Available parameters are {carer param}
原因:
/**
* 注册一个车主信息
* @param carer
* @return
*/
public void insertCarer(@Param("carer") Carer carer);
这里用了@param注解,传的参数是一个类
而在xml文件里我写的是
<insert parameterType="">
INSERT INTO carer(id,name,password,phone,carNumber,city) VALUES (#{id},#{name},#{password},#{phone},#{carNumber},#{city})
</insert>
这样直接写id是找不到carer的id的,要加才可以
修改如下:
<insert parameterType="">
INSERT INTO carer(id,name,password,phone,carNumber,city) VALUES (#{},#{},#{},#{},#{},#{})
</insert>
就成功了
然后找了几个也会出现这个问题的原因的解决办法,虽然没有解决我的问题,但是也记录一下
排查方法如下:
1、mapper接口和是否在同一个包(package)下?名字是否一样(仅后缀不同)?
2、的命名空间(namespace)是否跟mapper接口的包名一致?
3、接口的方法名,与xml中的一条sql标签的id一致
4、如果接口中的返回值List集合(不知道其他集合也是),那么xml里面的配置,尽量用resultMap(保证resultMap配置正确),不要用resultType
5、如果你的项目是maven项目,请你在编译后,到接口所在目录看一看,很有可能是没有生产对应的xml文件,因为maven默认是不编译的,因此,你需要在你的的<build></build>里面,加这么一段:
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>