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)
每天学习一点点,你就进步一点点。