MyBatis-PlusQueryWrapperとLambdaQueryWrapperの使用

ここに画像の説明を挿入

Banner_itemテーブルがある場合は、banner_id(クエリリスト)を使用してすべてのデータを見つける必要があります。

@Data
public class BannerItem {

    private Long id;

    private String name;

    private String img;

    private String keyword;

    private Integer type;

    private Long bannerId;
}


QueryWrapper

それを使用する最も基本的な方法はこのようなものです

//クエリ条件コンストラクタ

QueryWrapper<BannerItem> wrapper = new QueryWrapper<>();
wrapper.eq("banner_id", id);
// 查询操作
List<BannerItem> bannerItems = bannerItemMapper.selectList(wrapper);
// 现在也被封装到ServiceImpl的list方法里面
// List<BannerItem> bannerItems = serviceImpl.list(wrapper);


次に、ラムダを導入して、コードにbanner_idのようなハードコードを記述しないようにすることができます。

QueryWrapper<BannerItem> wrapper = new QueryWrapper<>();
wrapper.lambda().eq(BannerItem::getBannerId, id);
List<BannerItem> bannerItems = bannerItemMapper.selectList(wrapper);
// 现在也被封装到ServiceImpl的list方法里面
// List<BannerItem> bannerItems = serviceImpl.list(wrapper);


LambdaQueryWrapper
ラムダの使用を簡素化するために、LambdaQueryWrapperコンストラクターを次の構文で書き直すことができます。

LambdaQueryWrapper<BannerItem> wrapper = new QueryWrapper<BannerItem>().lambda();
wrapper.eq(BannerItem::getBannerId, id);
List<BannerItem> bannerItems = bannerItemMapper.selectList(wrapper);
// 现在也被封装到ServiceImpl的list方法里面
// List<BannerItem> bannerItems = serviceImpl.list(wrapper);


QueryWrapper <BannerItem> .lambda()を再び単純化して、次のようにすることができます。

LambdaQueryWrapper<BannerItem> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(BannerItem::getBannerId, id);
List<BannerItem> bannerItems = bannerItemMapper.selectList(wrapper);
// 现在也被封装到ServiceImpl的list方法里面
// List<BannerItem> bannerItems = serviceImpl.list(wrapper);


チェーンクエリ

MyBatis-Plusは、上記のコードと同じ効果を持つチェーンクエリメソッドも提供します。
ただし、この書き方はスキルを誇示する傾向があり、読みやすさは上記のコードほど強くありません。必要に応じて書き方を選択できます。

List<BannerItem> bannerItems = new LambdaQueryChainWrapper<>(bannerItemMapper)
                        .eq(BannerItem::getBannerId, id)
                        .list();


特定のレコードの詳細をIDでクエリするなど、1つのレコードのみをクエリする場合は、たとえば.one()を使用します。

BannerItem bannerItem = new LambdaQueryChainWrapper<>(bannerItemMapper)
                        .eq(BannerItem::getId, id)
                        .one();

 

おすすめ

転載: blog.csdn.net/zw764987243/article/details/114286053