@Param(“XXX“)注解的使用和解析,报错Parameter ‘XXX‘ not found. Available parameters are [0, 1, param1,param1]

关于@Param
1 、@Param注解的作用是给参数命名,参数命名后就能根据名字得到参数值,正确的将参数传入sql语句中(一般通过#{}的方式,${}会有sql注入的问题)。
2、一般写在mappe接口的入参,不宜在service接口上使用。

有一种观点就是对传入参数的申明(声明),比如接口传入2个参数,其命名和SQL的#{xxx}不一致,那么参数的传递过程就会中断,因为不知道哪个参数是sql需要的。
我所理解的就是在查询的时候,传入一个参数的时候,是可以知道的,如果说是传入两个参数,程序是不知道你要用哪个所有需要标注@Param(“XXX”) 跟sql语句中的#{XXX}对应即可。

首先解释一下为毛要用这个东西

当在查询的时候,一个参数的时候,在直接在入参中写入就可以了,但是当两个参数的时候,怎么办?

两种办法:第一用Map ,第二:就用@param,[可读性比较好,参数少的时候]
注意:当参数为2-5个时候,用@param最佳,当大于5的时候,肯定会选择map了

第一种Mpa:public xxx(Map map); 键值对的形式,key value 不管你有多少个参数都是就可以的
map.put(“a1”,“a1”);map.put(“b1”,“b1”);

举例说明:

<select id="findRoleByMap" parameterType="map" resultType="role">
    SELECT id,name FROM t_role
    WHERE roleName=#{roleName}
    AND note=#{note}
<select>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值