Mybatist-plus在开发过程中遇到的问题和解决办法

1,总是老忘记一些LambdaQueryWrapper常用的表达式

 

 

 2,min max sum 等聚合函数的查询方法

     QueryWrapper<ParagonPrintLog> queryWrapper = new QueryWrapper<>();
        queryWrapper.select(" IFNULL( min(id),0) as minNum, IFNULL( max(id),0) as maxNum");
        queryWrapper.lambda().eq(ParagonPrintLog::getDepartmentCode,"0");
        Map<String, Object> map = this.getMap(queryWrapper);
        Integer minId = Integer.valueOf(map.get("minNum").toString());
        Integer maxId = Integer.valueOf(map.get("maxNum").toString());

3,只查询指定字段(只查询三个字段) 

queryWrapper.select("id","url","title")

 4,排除某些字段

queryWrapper.lambda().select(OutgoingEmailLog.class, info -> !info.getColumn().equals("email_content"));

 5,mybatis-plus分页查询、不查询总数方法

 打印sql的时候,你会发现执行一条分页查询语句的时候,会打印两个sql,一个是查询语句,一个是查询总数的sql

如果不想查询总数,可使用 new Page<>(1,1,false)传false就会只查询记录数,不会查询总数;默认是true

 6,mybatis plus 的条件构造器,十分方便

      QueryWrapper<User> queryWrapper = new QueryWrapper<>();
		//下面这句是不查position这个字段
          queryWrapper.select(User.class,item -> !item .getColumn().equals("position"));
          //下面这句是查询position不为管理员且状态为1的用户
          queryWrapper.select("position").notLike("position","管理员").eq("state",1);
		//下面这句是查询指定字段,但是姓名中带“猛”的用户
		queryWrapper.select("name", "age","position").like("name", "猛");
		//下面这句是查询状态为R8,安全等级为2或者为9的人员信息
		queryWrapper.eq("state","R8").eq("safety_level","2").or(qw ->qw.eq("state","R8").eq("safety_level","9"));
                    
		//根据条件查询
		queryWrapper.eq(StringUtils.isNotBlank(dailyViolations.getName()), "name", dailyViolations.getName());
		queryWrapper.ge(StringUtils.isNotBlank(startTime), "time", startTime);
            queryWrapper.le(StringUtils.isNotBlank(endTime), "time", endTime);
		//下面是排序
		queryWrapper.orderByAsc("state");
            queryWrapper.orderByDesc("time");

  7,mybatisPlus更新数据时候,如果有字段需要忽略不管,意思是传入任何值,都不更新数据库字段,可以使用注解  @TableField(updateStrategy = FieldStrategy.NEVER)


posted @ 2022-09-07 20:12  张亮java  阅读(453)  评论(0编辑  收藏  举报