NIUCLOUD是一款SaaS管理后台框架多应用插件+云编译。上千名开发者、服务商正在积极拥抱开发者生态。欢迎开发者们免费入驻。一起助力发展! 广告
`::` 是 Java 中的**方法引用操作符(Method Reference)**,它是 Java 8 引入的特性。 ## 方法引用的作用 - **简化代码**:替代 lambda 表达式,使代码更简洁易读 - **引用现有方法**:直接使用已存在的方法作为函数式接口的实例 ## 在你的代码中 ```java LambdaQueryWrapper<CommercialPropertyAttachmentEntity> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(CommercialPropertyAttachmentEntity::getPropertyId, updateForm.getId()); ``` - `CommercialPropertyAttachmentEntity::getPropertyId` 等价于 `lambda` 表达式 `(obj) -> obj.getPropertyId()` - 这里 MyBatis-Plus 的 LambdaQueryWrapper 会自动解析这个方法引用来构建 SQL 查询条件 - 最终会生成类似 `WHERE property_id = ?` 的 SQL 条件 ## 其他常见用法 1. **静态方法引用**:`ClassName::staticMethod` 2. **实例方法引用**:`instance::method` 3. **构造方法引用**:`ClassName::new` 4. **对象方法引用**:`ClassName::method` >[info]queryWrapper.eq(CommercialPropertyAttachmentEntity::getPropertyId, updateForm.getId()); 这行代码使用的是MyBatis-Plus框架中的LambdaQueryWrapper,它的作用是构建SQL查询条件。 具体解释: ```java queryWrapper.eq(CommercialPropertyAttachmentEntity::getPropertyId, updateForm.getId()); ``` **1. 功能作用:** - 添加一个等于(`=`)的查询条件 - 相当于SQL中的:`WHERE property_id = ?` - 第一个参数指定要比较的实体字段,第二个参数指定要比较的值 **2. 详细分解:** - **`eq()`**:equals的缩写,表示等于条件 - **`CommercialPropertyAttachmentEntity::getPropertyId`**:使用Java 8的方法引用,指向实体类的`getPropertyId()`方法,这样MyBatis-Plus就能知道要查询的是`propertyId`字段 - **`updateForm.getId()`**:从`updateForm`对象中获取`id`值作为查询条件的值 **3. 等价的手写SQL:** ```sql SELECT * FROM commercial_property_attachment WHERE property_id = [updateForm.getId()的值] ``` **4. 优点:** - **类型安全**:编译器会检查字段名是否正确 - **重构友好**:如果实体类字段名改变,这里会自动报错 - **避免硬编码**:不需要写字符串形式的字段名"property_id" **5. 使用场景:** 这段代码通常用于查询与某个商业物业相关的所有附件记录,比如根据物业ID查询该物业的所有附件文件。 实际上,这行代码构建的查询条件可以与其他条件组合,最终形成一个完整的WHERE子句来执行数据库查询。