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

浙公网安备 33010602011771号