MyBatis-Plus使用表的两字段作为查询条件

1. 场景

在业务开发使用MyBatis-Plus作为ORM框架,业务场景是:查询可用的套餐包,其中有两个字段:套餐包面值(value)和已使用值(used),那么在查询时就需要加上判断条件 value < used 方能查出可用数据集合。在SQL中很简单,但是在MyBatis-Plus中那么该如何实现呢?

2. 领域模型

2.1 表结构


CREATE TABLE `tbl_test` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `value` decimal(12,2) unsigned NOT NULL DEFAULT '0.00' COMMENT '数值',
  `used` decimal(12,2) unsigned NOT NULL DEFAULT '0.00' COMMENT '被使用',
  `status` tinyint(4) unsigned NOT NULL DEFAULT '1' COMMENT '状态:0过期,1正常',
  `expire` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '到期时间',
  `createtime` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '创建时间',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='测试表';


2.2 表数据

在这里插入图片描述

2.3 要查询的数据集

在这里插入图片描述

3. 实现

翻阅官方文档的API寻找解决方案,https://baomidou.com/pages/10c804/#apply
看到了apply("sql_xxx")这可以写SQL,其中sql_xxx替换成你要加的两字段判断条件即可,如此即可满足我的查询要求。


List<TblTest> tblTestList = tblTestService.list(new LambdaQueryWrapper<TblTest>()
                .eq(TblTest::getStatus, 1)
                .apply("`used` < `value`") // 只需要加上这个条件即可
                .orderByDesc(TblTest::getId)
            );
            

4. 总结

从Linux的man命令中得到的技巧,只要你在实际中有所需要的,一般的软件作者都会提前考虑并提供解决方案,你要做的就是:快速定位对应的文档,找到解决方案。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值