@Param(Constants.WRAPPER)是什么

用下面一段代码解释

@Select("SELECT g.*, d.detail " +
        "FROM wms_good g " +
        "LEFT JOIN wms_goods_detail d ON g.goods_id = d.good_id " +
        "${ew.customSqlSegment}")
Page<GoodsDTO> selectGoodsWithDetail(Page<GoodsDTO> page, @Param(Constants.WRAPPER) QueryWrapper<WmsGood> wrapper);
//这里的pagemybatis-plus,根据page的属性自动帮我们生成了limit的语句

1. @Param 注解的作用

  • 核心功能:为 Mapper 接口方法的参数指定名称

  • 解决的问题:在 MyBatis 中,当 Mapper 方法有多个参数时,XML 映射文件无法直接通过参数名引用参数

  • 使用场景

    // 没有 @Param 时,XML 中需用 param1, param2 引用
    User selectUser(String name, Integer age);
    ​
    // 使用 @Param 后,XML 可直接用注解值引用
    User selectUser(@Param("userName") String name, 
                   @Param("userAge") Integer age);

2.Constants.WRAPPER 的特殊含义

  • 来源:MyBatis-Plus 的常量类 com.baomidou.mybatisplus.core.toolkit.Constants

  • 实际值:"ew"(Entity Wrapper 的缩写)

  • 设计目的:统一条件构造器参数的标识名称

 
  • 将 QueryWrapper<WmsGood> 类型的参数命名为 "ew"

  • ew 对应 @Param(Constants.WRAPPER) 指定的参数名

  • customSqlSegment 是 QueryWrapper 的方法,返回生成的 SQL 条件片段

  • 说白了@Param(Constants.WRAPPER)作用就是将自己的wrapper条件重命名为ew

${ew.customSqlSegment} 是 MyBatis-Plus 框架中的一个动态 SQL 片段占位符,用于在 XML 映射文件中直接插入由 QueryWrapper 或 UpdateWrapper 生成的 SQL 条件语句

如果说wrapper条件为

QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("status", 1)
       .like("name", "Tom")
       .orderByDesc("age");

${ew.customSqlSegment} 会被替换为:

WHERE status = 1 AND name LIKE '%Tom%' ORDER BY age DESC

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值