MyBatis Plus Lambda 表达式:SQL 转 Lambda 示例
MyBatis Plus Lambda 表达式:SQL 转 Lambda 示例
使用 MyBatis Plus Lambda 表达式可以将 SQL 语句转换为代码,实现高效灵活的查询操作。
示例:将 SQL 语句 where (lock_status = '0' or (lock_status = '1' and lock_time < now() )) and (err_msg is null or err_msg = '') 转换为 MyBatis Plus Lambda 表达式。
QueryWrapper<Entity> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().and(
qw -> qw.eq(Entity::getLockStatus, '0')
.or()
.and(
qw1 -> qw1.eq(Entity::getLockStatus, '1')
.lt(Entity::getLockTime, LocalDateTime.now())
)
).and(
qw -> qw.isNull(Entity::getErrMsg)
.or()
.eq(Entity::getErrMsg, '')
);
其中,Entity 为实体类名称。
解释:
queryWrapper.lambda():开启 Lambda 表达式模式。and():表示多个条件的 AND 操作。eq(Entity::getLockStatus, '0'):表示lock_status等于 '0'。or():表示多个条件的 OR 操作。lt(Entity::getLockTime, LocalDateTime.now()):表示lock_time小于当前时间。isNull(Entity::getErrMsg):表示err_msg为空。eq(Entity::getErrMsg, ''):表示err_msg等于空字符串。
注意:
- 需要引入
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper类。 Entity::getLockStatus等表示获取实体类Entity的lock_status属性。LocalDateTime.now()获取当前时间。
通过使用 MyBatis Plus Lambda 表达式,可以更加简洁高效地编写查询条件,提高代码可读性和可维护性。
原文地址: http://www.cveoy.top/t/topic/olcV 著作权归作者所有。请勿转载和采集!