MyBatis-Plus はテーブルの 2 つのフィールドをクエリ条件として使用します

1. シーン

ビジネス開発では、MyBatis-Plus が ORM フレームワークとして使用されます。ビジネス シナリオは次のとおりです。パッケージ額面 (値) と使用済み価値 (使用済み) の 2 つのフィールドを持つ利用可能なパッケージをクエリし、クエリ時に判断を追加する必要があります。条件値 < 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
SQL を記述できることがわかりましたapply("sql_xxx")。sql_xxx は、追加する 2 つのフィールドに置き換えて、条件を満たしているため、クエリ要件を満たすことができます。


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

4. まとめ

Linux man コマンドで得られるスキルは、実際に必要なことがあれば、一般のソフトウェア作成者が事前に考えて解決策を提供してくれるので、対応するドキュメントを素早く見つけて解決策を見つけるだけです

おすすめ

転載: blog.csdn.net/oschina_41731918/article/details/128447623