@Param的注意事项

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

举个例子

这是dao层的接口方法

使用param

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

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

我们看一个mapper语句


               
                productCondition.shop != null and  productCondition.shop.shopId != null ">
                    and shop_id = #{productCondition.shop.shopId}
               

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

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

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

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

mapper文件里


               
                productCondition.shop != null and  productCondition.shop.shopId != null ">
                    and shop_id = #{productCondition.shop.shopId}
               

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

 

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


               
                shop
!= null and  shop.shopId != null ">
                    and shop_id = #{shop.shopId}
               

 

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

               
                productCondition.shop != null and  productCondition.shop.shopId != null ">
                    and shop_id = #{productCondition.shop.shopId}
               

这种写法才可以

 

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

             
                shop
!= null and  shop.shopId != null ">
                    and shop_id = #{shop.shopId}
               

你可能感兴趣的:(@Param的注意事项)