使用@Param注解时注意org.springframework.data.repository.query.Param与org.apache.ibatis.annotations.Param的区别

注解@Param有以下两种:

1、Spring
	org.springframework.data.repository.query.Param
2、mybatis
	org.apache.ibatis.annotations.Param

两者的区别在于:
spring的注解参数按照先后顺序传入,如[arg1, arg0, param1, param2]

mybatis的注解则是使用参数名传入,如{#userId}

注意

如果使用spring的注解,而xml的SQL使用参数名取值,会报下面的错:

        org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter 'userId' not found. Available parameters are [arg1, arg0, param1, param2]
	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:77)
	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:446)
	at com.sun.proxy.$Proxy128.selectList(Unknown Source)
	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:230)
	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:158)
	at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:76)
	at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:62)
	at com.sun.proxy.$Proxy187.queryEquipmentAndPositionByProjectId(Unknown Source)
posted @ 2022-08-22 21:54  kanie_life  阅读(325)  评论(0编辑  收藏  举报