今天遇到一个关于mybatis的一个问题,本地项目启动后调用其他项目的controller方法后(不建议直接调controller方法),控制台打印错误信息org.apache.ibatis.binding.BindingException
原因是Mapper执行方法的时候xml里不识别传入的方法,因为mapper的方法是query(arg0,arg1),当你传入参数param1的时候,它不识别,一般此时要加Param注解,query(@Param("param1") arg0)
其实是maven-plugin的问题,有一个参数-parameters默认是不开启的,开启后重新编译即可不加Param注解。
===============================================================
另外,如果传参类型为对象时,开启-parameters参数后不用加@Param注解,如果加了注解,只会将对象编译为指定参数名,需要在Mapper用参时指定对象,不加@Param注解则不需要指定。
例:
-parameters参数已开启,不加@Param注解
mapper.java
int insert(Engage engage);
mapper.xml
<insert id="insert">
insert into engage (id, engage_no, engage_name, engage_desc,
labor_way, cost_dept_one_id, create_channel_id, create_user)
VALUES (#{id}, #{engageNo}, #{engageName}, #{engageDesc},
#{laborWay}, #{costDeptOneId}, #{createChannelId}, #{createUser})
</insert>
-parameters参数已开启,加@Param注解
mapper.java
int insert(@Param("engage")Engage engage);
mapper.xml需要指定
<insert id="insert">
insert into engage (id, engage_no, engage_name, engage_desc,
labor_way, cost_dept_one_id, create_channel_id, create_user)
VALUES (#{engage.id}, #{engage.engageNo}, #{engage.engageName}, #{engage.engageDesc},
#{engage.laborWay}, #{engage.costDeptOneId}, #{engage.createChannelId}, #{engage.createUser})
</insert>
===============================================================
参考:https://blog.51cto.com/u_12393361/5021343解决mybatis不加@Param报错 org.apache.ibatis.binding.BindingException,在使用mybatis开发时,如果Dao层方法有多个参数,但参数没加@Param注解时,可能会到一下错误:org.apache.ibatis.binding.BindingException:Parameter‘no’notfound.Availableparametersare[arg1,arg0,param1,https://blog.51cto.com/u_12393361/5021343mybatis省略@Param注解操作_java_脚本之家这篇文章主要介绍了mybatis省略@Param注解操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
https://www.jb51.net/article/200763.htm?tdsourcetag=s_pcqq_aiomsg