MybatisPlus的Wrappers笔记

1,461 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第1天,点击查看活动详情

一、Wrappers.lambdaQuery()根据条件查询

List<String> itemIds = this.listObjs(Wrappers.lambdaQuery(ItemInfo.class).select(ItemInfo::getId).eq(ItemInfo::getItemCode, item.getItemCode()).eq(ItemInfo::getItemBarcode, item.getItemBarcode()), Object::toString);

Wrappers.<FormInfo>lambdaQuery().eq(FormInfo::getRoleId,formInfoVo.getFormInfo().getRoleId()).orderByDesc(CardTake::getCreateTime)); //根据createTime降序排序;

Wrappers.query().lambda()等同于Wrappers.query().lambda().

lambdaQuery().in(IncidentType::getCode, Lists.newArrayList(codes.split(","))).list() 

二、Wrappers.lambdaUpdate()根据条件更新表里某些字段

service.update(Wrappers.lambdaUpdate(OrderInfo.class)
                    .set(OrderInfo::getOrderStatus, CommonConstant.order_status.status_discard)
                    .set(OrderInfo::getId, orderInfo.getId() + "-")
                    .eq(OrderInfo::getId, ele.getParentId()));

三、Condition.getQueryWrapper(entity, ReportProject.class)实体对象转QueryWrapper

LambdaQueryWrapper<ReportProject> wrapper = Condition.getQueryWrapper(param, ReportProject.class).lambda();

四、QueryWrapper查询条件构造器

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    queryWrapper
            .isNull("name")
            .ge("age", 12)
            .isNotNull("email");
        int result = userMapper.delete(queryWrapper);
    System.out.println("delete return count = " + result);

五、LambdaQueryWrapper简化QueryWrapper

LambdaQueryWrapper的四种写法:

1、LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.select(Test::getName).eq(Test::getId,14);

2、testMapper.selectList(Wrappers.lambdaQuery().eq(Test::getId,14));

3、testMapper.selectList(Wrappers.query().lambda().eq(Test::getId,16));

4、LambdaQueryWrapper wrapper = new QueryWrapper().lambda();

六、链式查询LambdaQueryChainWrapper

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

附加条件构造器LambdaQueryWrapper常用方法 ---这几个肯定够用了

    wrapper.eq("实体类::查询字段", "条件值"); //相当于where条件 
    
    wrapper.between("实体类::查询字段", "区间一", "区间二");//相当于范围内使用的between 
    
    wrapper.like("实体类::查询字段", "模糊查询的字符"); //模糊查询like 
    
    wrapper.groupBy("实体类::查询字段"); //相当于group by分组 
    
    wrapper.in("实体类::查询字段", "包括的值,分割"); //相当于in 
    
    wrapper.orderByAsc("实体类::查询字段"); //升序 
    
    wrapper.orderByDesc("实体类::查询字段");//降序 
    
    wrapper.ge("实体类::查询字段", "要比较的值"); //大于等于 
    
    wrapper.le("实体类::查询字段", "要比较的值"); //小于等于
    
其他方法:
    queryWrapper.lt()——小于

    queryWrapper.gt()——大于

    queryWrapper.ne()——不等于

    queryWrapper.notBetweeen(“age”,10,20)——age不在值1020之间

    queryWrapper.notLike(“属性”,“值”)——模糊查询不匹配值‘%%’
    queryWrapper.likeLeft(“属性”,“值”)——模糊查询匹配最后一位值‘%值’
    queryWrapper.likeRight(“属性”,“值”)——模糊查询匹配第一位值‘值%’
    queryWrapper.isNull()——值为空或null
    queryWrapper.isNotNull()——值不为空或null

    queryWrapper.notIn(“属性”,条件,条件 )——不符合多个条件的值
    queryWrapper.or()——或者
    queryWrapper.and()——和

    queryWrapper.inSql(“sql语句”)——符合sql语句的值
    queryWrapper.notSql(“sql语句”)——不符合SQL语句的值
    queryWrapper.esists(“SQL语句”)——查询符合SQL语句的值
    queryWrapper.notEsists(“SQL语句”)——查询不符合SQL语句的值