mybatis中@Param注解总是报取不到参数问题及解决

 更新时间:2022年07月11日 11:54:46   作者:初夏0811  
这篇文章主要介绍了mybatis中@Param注解总是报取不到参数问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

@Param注解总是报取不到参数

springboot+mybatis项目中,在mapper 层传多个参数,请求时总是报参数取不到,快疯了,我发誓xml层没问题,mapper层参数名也没问题

错误如下

百度了好久,一直让我检查.xml文件是否存在问题,各种方法都尝试遍了,没用。。。

最后检查来检查去发现自己@param注解包导错了,param注解应该用的是ibatis包的,而我导错了,如下:



 

我用的idea工具开发,直接alt+回车键快捷导入包,没太注意引错了,编译也没报错,坑。。。。

应该导入:import org.apache.ibatis.annotations.Param,ibatis是mybatis的前身,mybatis是由ibatis发展而来。

注意:

其实就是个很小的问题,还有个需要注意的就是在mapper 层,如果只有一个参数不需要@param注解,如果有多个参数,必须要@param()注解,指明每个参数的参数名,否则也会报找不到参数问题,因为 mybatis注解配置使用ognl表达式,这样才能正常的通过注解传值和取值多个参数的问题。

@Param注解详细使用方法

1.@Param这个注解是用来解决接口方法有多个参数时

xxMapper.xml文件绑定参数混淆问题。

需要在DAO方法形参前面添加@Param(“xxx”),来区分不同的需要绑定到xxMapper.xml的参数。

注意双引号里的值要与xxMapper.xml中#{}中的值相等,如:

DAO方法:

public void list (@Param(“abc1”) String abc1, @Param(“abc2”) String abc2);

xxMapper.xml中:

values(#{abc1},#{abc2}

2.可以修饰JavaBean对象、Map集合等

如:

public void list (@Param(“param”) User user);

xxMapper.xml中:

where username = #{param.userName}
List getUser(@Param(“param”) Map map);

xxMapper.xml中values:

(#{param.id},#{param.name},#{param.age},#{param.sex})

3.@Param参数其实可加可不加

不加的话按照顺序依次取出,如参数User user中userName和password的值添加到#{userName}#{password}。

但是当DAO方法里多个参数没有封装在一个Javabean中时,则必须加。或者DAO方法参数里有一个以上的JavaBean、集合等情况下也必须加,如:

@Param(“user”) User user, @Param(“example”) Map map

4.使用@Param注解好处

方法参数名可以不与xxMapper.xml一致,但是注意@Param("")里面的值要与要与xxMapper.xml中#{}里的值一致就可以了,如:

@Param(“user123”) User user
#{user123.userName}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 初步解析Java中AffineTransform类的使用

    初步解析Java中AffineTransform类的使用

    这篇文章主要介绍了Java中AffineTransform类的使用,AffineTransform类经常被用来处理图片,需要的朋友可以参考下
    2015-10-10
  • Spring集成Mybatis过程详细讲解

    Spring集成Mybatis过程详细讲解

    mybatis-plus是一个Mybatis的增强工具,在Mybatis的基础上只做增强不做改变,为简化开发、提高效率而生,下面这篇文章主要给大家介绍了关于SpringBoot整合Mybatis-plus案例及用法实例的相关资料,需要的朋友可以参考下
    2023-03-03
  • 详解Spring Boot中MyBatis的使用方法

    详解Spring Boot中MyBatis的使用方法

    mybatis初期使用比较麻烦,需要各种配置文件、实体类、dao层映射关联、还有一大推其它配置。当然mybatis也发现了这种弊端。下面通过本文给大家详细介绍Spring Boot中MyBatis的使用方法,感兴趣的朋友一起看看吧
    2017-07-07
  • Java实现学生信息管理界面

    Java实现学生信息管理界面

    这篇文章主要为大家详细介绍了Java实现学生信息管理界面,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • Java经典面试题汇总:Mybatis

    Java经典面试题汇总:Mybatis

    本篇总结的是Mybatis框架相关的面试题,后续会持续更新,希望我的分享可以帮助到正在备战面试的实习生或者已经工作的同行,如果发现错误还望大家多多包涵,不吝赐教,谢谢
    2021-07-07
  • Java实现解析zip压缩包并获取文件内容

    Java实现解析zip压缩包并获取文件内容

    这篇文章主要为大家详细介绍了如何利用Java语言实现页面上传一个源码压缩包,后端将压缩包解压,并获取每个文件中的内容,感兴趣的可以动手尝试一下
    2022-07-07
  • java JSONArray 遍历方式(2种)

    java JSONArray 遍历方式(2种)

    这篇文章主要介绍了java JSONArray 遍历方式(2种),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • springboot中的Application.properties常用配置

    springboot中的Application.properties常用配置

    这篇文章主要介绍了springboot中的Application.properties常用配置,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • Lombok在idea中的使用教程

    Lombok在idea中的使用教程

    Lombok是一个可以通过简单的注解形式,来帮助我们简化消除一些必须有但显得很臃肿(如果getter、setter方法)的Java代码的工具,通过使用对应的注解,可以在编译源码的时候生成对应的方法,这篇文章主要介绍了Lombok在idea中的使用,需要的朋友可以参考下
    2023-03-03
  • Mybatis详解动态SQL以及单表多表查询的应用

    Mybatis详解动态SQL以及单表多表查询的应用

    MyBatis的动态SQL是基于OGNL表达式的,它可以帮助我们方便的在SQL语句中实现某些逻辑,下面这篇文章主要给大家介绍了关于Mybatis超级强大的动态SQL语句的相关资料,需要的朋友可以参考下
    2022-06-06

最新评论