ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Mybatis的注解方式,一次性注入多个参数需要用@Param

2021-11-27 19:58:23  阅读:164  来源: 互联网

标签:String roleId userId Param 参数 Mybatis 注解


【1】今天在做一个多表添加的时候,发现了一个问题,就是明明我写的都是对的,但是web页面就是给我报一个找不到指定参数的情况

 可以看到我们的问题是Mybatis出现的,也就是大概率不可能是controller层或者是service层,只能先从dao层寻找答案,但是我通过debug的方式启动服务器,发现service和controller层都可以获得到这个参数,那么问题无疑,就是dao层的sql语句或者参数传错了,就这两行代码,看了半天,都没有找到哪里出错,而且外键关联的表里,也有我需要添加的数据。

 @Insert("insert into users_role values (userId=#{userId},roleId=#{roleId})")
    void addRoleToUser(String userId, String roleId);

后来查阅资料才发现,当mybatis传入多个参数时(一般2-5)个,是需要用@Param来定义我们的参数的,因为Mybatis只会识别一个参数,并且匹配,但是当我们传入多个参数的时候,mybatis就分不开了,这时候有两种方法,一个是使用Map,这个需要在xml配置的情况下使用,但是一般我们表面上看不到具体传的是什么参数,可读性较差

public List<Role> findRoleByMap(Map<String, Object> parameter);
<select id="findRoleByMap" parameterType="map" resultType="role">
    SELECT id,name FROM t_role
    WHERE roleName=#{roleName}
    AND note=#{note}
<select>

另一种就是注解方式的@Param

 @Insert("insert into users_role values (userId=#{userId},roleId=#{roleId})")
    void addRoleToUser(@Param("userId") String userId, @Param("roleId") String roleId);

这样既方便,又简洁。自然也解决了当初的问题。

标签:String,roleId,userId,Param,参数,Mybatis,注解
来源: https://blog.csdn.net/Hpeacheng/article/details/121582242

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有