我有篇文章写了Mybatis-plus的一些语法以及简单的用法,此处为链接,需要的可以看一下。


这里记录一下项目中碰到使用eq(),但里面的结构是eq(Entity :: name ,“张三”),
算是第一次接触接触这个格式,这eq括号里面的“ :: ”两个冒号,就是该实体的字段,类似于传参

LambdaQueryWrapper<TbCloudbox> lqDevice = new LambdaQueryWrapper<>();1//NVR
        lqDevice.eq(TbCloudbox::getStreetNumber, "1354322180948406274");2List<TbCloudbox> list = iTbCloudboxService.list(lqDevice);3

(1)创建QueryWrapper,类型为TbCloudbox,也就是你想要查询的实体类;

(2)声明实体类TbCloudbox,对应的字段streetNumber(注意:要使用get方法,getStreetNumber,可以看做是参数),后面‘1354322180948406274’就是参数的值

(3)利用实体类查询出想要的数据即可


上面是我最初的理解,也算错,今天又偶然发现一篇文章MyBatis-Plus QueryWrapper及LambdaQueryWrapper的使用,这里讲了lambda表达式的LambdaQueryWrapper
引入一个文章中的例子吧

@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);

然后我们可以引入lambda,避免我们在代码中写类似的于banner_id的硬编码

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


如果只想查询一条记录,例如通过id查询某条记录的详情,使用.one()即可,例如

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

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐