入参是字符串时动态sql用@Param(“param“)里的param;入参查询类时,动态sql用@Param(“param“)里的 param.属性

用了@Param(“param”) ,那么@Param里的值"param" 就要用在sql语句里。建议 写成 @Param(“name”) String name ,@Param里的name和入参变量名保存一致。方便看代码。实际上sql里的name 就是@Param(“name”) 里的name。
如果 入参是Param 类,List getGoods(@Param(“param”) Param param); Param 类里有属性name, 动态sql用@Param(“param”)里的 param.属性

写法一:用if标签判断传入的变量是否为null或空字符串(传的是" "那就不加上if标签里的条件)

String name = null;
list2 = goodsMapper.getGoods(name);
List getGoods(@Param(“param”) String name);

select
*
from goods
where data_status = ‘0’

and good_name = #{param}


sql日志:select *from goods where data_status = ‘0’

如果是 List getGoods(@Param(“id”) String name); sql语句里要是(@Param(“id”) 里的id才不报错

select
*
from goods
where data_status = ‘0’

and good_name = #{id}

写法二:不用if标签判断传入的变量是否为null或空字符串

建议 写成 @Param(“name”) String name ,方便看代码。实际上sql里的name 就是@Param(“name”) 里的name。
List getGoods(@Param(“name”) String name);

select
*
from goods
where data_status = ‘0’
and good_name = #{name}

如果传入的 String name = null ,不报错,打出的sql日志:
select* from goods where data_status = ‘0’ and good_name = null 什么都查不出
成功

写法三:不用 @Param(“name”)

List getGoods(String name);

select
*
from goods
where data_status = ‘0’
and good_name = #{name}

成功

4、sql里的name 要是@Param(“name”) 里的name
List getGoods(@Param(“param”) String name);

select
*
from goods
where data_status = ‘0’
and good_name = #{param}

成功,不报错。

错误写法:

5、报错
List getGoods(@Param(“param”) String name);

<select id="getGoods" resultMap="BaseResultMap">
    select
*
    from goods
    where data_status = '0'
    and good_name = #{name}
</select>

报错:
org.apache.ibatis.binding.BindingException: Parameter ‘name’ not found. Available parameters are [param, param1]

6、报错
List getGoods(@Param(“param”) String name);

select
*
from goods
where data_status = ‘0’
and good_name = #{param.name}

报错 org.apache.ibatis.reflection.ReflectionException: There is no getter for property named ‘name’ in ‘class java.lang.String’
写成 and good_name = #{name.name} 也是报这个错

  • 23
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值