mybatisplus基础操作之lambda和stream流的使用
mybatisplus中lambda的使用
一、lambdaUpdate 1.更新某张表的某个字段
/** * * 将fly_numbers 字段值+1 **/ boolean success = airRouteService.lambdaUpdate() .setSql("fly_numbers = fly_numbers + 1") .eq(AirRoute::getId, routeId) .update();
2.删除单条数据
/** * *删除对应id下的图片 **/ taskImageService.lambdaUpdate() .eq(TaskImage::getTaskId, taskId) .remove();
3.删除多条数据
/** * *删除对应ids下的图片 **/ taskImageService.lambdaUpdate() .in(TaskImage::getTaskId, taskIds) .remove();
二、lambdaQuery 1.lambdaQuery获取数量
/** * * 获取轨迹数量 **/ cationCount = taskLocationService.lambdaQuery() .eq(TaskLocation::getTaskId, id) .count();
2.lambdaQuery获取集合
taskImageService.lambdaQuery() .select(TaskImage::getImageUrl) //查询imageurl字段 .eq(TaskImage::getTaskId, taskId) //查询条件 .list() //获得集合 .stream() //转为流 .filter(i -> !StringUtils.isEmpty(i.getImageUrl())) //过滤为空字段 .map(TaskImage::getImageUrl) .collect(Collectors.toList());
3.lambdaQuery动态查询排序分页
IPage<Task> pageInfo = Condition.getPage(query); taskService.lambdaQuery() .eq(!Objects.isNull(task.getProjectId()), Task::getProjectId, task.getProjectId()) // 按创建时间排序 .orderByDesc(Task::getCreateTime) .page(pageInfo);
4.lambdaQuery查询单个字段的值
Long polygonId = polygonPointService.lambdaQuery() .eq(PolygonPoint::getId, id) .one() .getPolygonId();
5.按照指定格式输出 工具类
/** * 通用组合框对象 * * @author pxz */ @Data @NoArgsConstructor @Accessors(chain = true) @ApiModel(value = "通用组合框对象") public class ComboBoxVO implements Serializable { private static final long serialVersionUID = 3431871989555003768L; /** * ID */ private Long id; /** * name */ private String name; public ComboBoxVO(Long id, String name) { this.id = id; this.name = name; } }
实现代码
@Override public List<ComboBoxVO> getEquipmentListByUserId(Integer userId) { List<Equipment> equipments = equipmentService.lambdaQuery() .select(Equipment::getId, Equipment::getName) .eq(Equipment::getUserId, userId) .list(); if (CollectionUtils.isEmpty(equipments)) { return Collections.emptyList(); } List<ComboBoxVO> voList = equipments.stream() .map(e -> new ComboBoxVO(Long.valueOf(e.getId().toString()), e.getName())) .collect(Collectors.toList()); return voList; } }