去评论
海欣资源

在Mybatis-Plus项目中怎样使用eq()

xx5678
2022/05/04 22:27:01
这里记录一下项目中碰到使用eq(),但里面的结构是eq(Entity :: name ,“张三”),
算是第一次接触接触这个格式,这eq括号里面的“ :: ”两个冒号,就是该实体的字段,类似于传参
LambdaQueryWrapper<TbCloudbox> lqDevice = new LambdaQueryWrapper<>();(1)
        //NVR
        lqDevice.eq(TbCloudbox::getStreetNumber, "1354322180948406274");(2)
        List<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();