@Param的注意事项

我们知道@Param在参数中使用,在mapper文件就能使用@Param里的参数名称对应相对的参数名称,并且是多个参数

举个例子

这是dao层的接口方法

使用param

  //展示商品列表
    List<Product> queryProductList(@Param("productCondition")Product productCondition,
                      @Param("rowIndex")int rowIndex,@Param("pageSize")int pageSize);//返回一个project集合

有了这样我们就可以去mapper里操作 

我们看一个mapper语句


                <!-- 根据shopId 查询-->
                <if test="productCondition.shop != null and  productCondition.shop.shopId != null ">
                    and shop_id = #{productCondition.shop.shopId}
                </if>

这里的productCondition类型是一个复合类型里面村有一个shop的属性

我们要使用的话必须是@para参数里的名称.复合类型里的参数名称(productCondition.shop)

但是当我们不去使用param的时候如下

//展示商品列表
    List<Product> queryProductList(Product productCondition,);//返回一个project集合(这里一个参数是因为多个参数的话就需要用param,这里我们不讨论这个性质)

mapper文件里


                <!-- 根据shopId 查询-->
                <if test="productCondition.shop != null and  productCondition.shop.shopId != null ">
                    and shop_id = #{productCondition.shop.shopId}
                </if>

结果是报错,无法找到这个Product.productCondition的属性,不用param必须这么写:

 

必须直接写复合类型的属性


                <!-- 根据shopId 查询-->
                <if test="shop
!= null and  shop.shopId != null ">
                    and shop_id = #{shop.shopId}
                </if>

 

并且我发现如果使用了param时必须要像下面这样写

                <!-- 根据shopId 查询-->
                <if test="productCondition.shop != null and  productCondition.shop.shopId != null ">
                    and shop_id = #{productCondition.shop.shopId}
                </if>

这种写法才可以

 

如果照下面这样写也会报错。

              <!-- 根据shopId 查询-->
                <if test="shop
!= null and  shop.shopId != null ">
                    and shop_id = #{shop.shopId}
                </if>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值