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 表达式,可以更加简洁高效地编写查询条件,提高代码可读性和可维护性。

MyBatis Plus Lambda 表达式:SQL 转 Lambda 示例

原文地址: http://www.cveoy.top/t/topic/olcV 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录