Использование MyBatis-Plus QueryWrapper и LambdaQueryWrapper

MyBatis

Если у нас есть таблица 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);

Затем мы можем ввести лямбда-выражения, чтобы избежать написания кода, подобногоbanner_idжестко запрограммированный

QueryWrapper<BannerItem> wrapper = new QueryWrapper<>();
wrapper.lambda().eq(BannerItem::getBannerId, id);
List<BannerItem> bannerItems = bannerItemMapper.selectList(wrapper);
  • LambdaQueryWrapper

Для того чтобы упростить использование лямбды, мы можем переписать ее в конструктор LambdaQueryWrapper, синтаксис такой:

LambdaQueryWrapper<BannerItem> wrapper = new QueryWrapper<BannerItem>().lambda();
wrapper.eq(BannerItem::getBannerId, id);
List<BannerItem> bannerItems = bannerItemMapper.selectList(wrapper);

мы можем сноваQueryWrapper<BannerItem>.lambda()Упростись, стань таким

LambdaQueryWrapper<BannerItem> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(BannerItem::getBannerId, id);
List<BannerItem> bannerItems = bannerItemMapper.selectList(wrapper);
  • цепочка запросов

MyBatis-Plus также предоставляет метод цепного запроса, который имеет тот же эффект, что и приведенный выше код. Тем не менее, этот способ написания имеет тенденцию демонстрировать навыки, а читабельность не так хороша, как приведенный выше код.Вы можете выбрать метод в соответствии с вашими потребностями.

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

Если вы хотите запросить только запись, например запрос сведений о записи по идентификатору, используйте.one()может быть, например

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