当前位置 博文首页 > ddd295569371的博客:Mybatis-Plus项目中使用eq()

    ddd295569371的博客:Mybatis-Plus项目中使用eq()

    作者:[db:作者] 时间:2021-06-15 18:14

    我有篇文章写了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();