提交 5348b29b 编写于 作者: lakernote's avatar lakernote

(add)[后端](新增多条件、多表关联、动态SQL、分页复杂查询示例)

上级 e9ca197e
package com.laker.admin.framework.model;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
/**
* 查询参数
*/
@Data
public class PageVO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 每页显示条数,默认 10
*/
@ApiModelProperty(value = "每页显示条数,默认 10")
private long size = 10;
/**
* 当前页,默认1,第一页
*/
@ApiModelProperty(value = "当前页,默认1,第一页")
private long current = 1;
/**
* 排序字段信息
* 排序字段和排序类型
* create_time desc,user_no asc.
*/
@ApiModelProperty(value = "排序字段和排序类型,例如:create_time desc,user_no asc.")
private String orderBy;
public Page toPage() {
Page page = new Page();
page.setCurrent(current);
page.setSize(size);
if (StrUtil.isNotBlank(orderBy)) {
List<OrderItem> orders = new ArrayList<>();
String[] orderItems = StrUtil.split(orderBy, ",");
for (String orderItemStr : orderItems) {
String[] orderAndSort = StrUtil.split(orderItemStr, " ");
if (CollUtil.size(orderAndSort) != 2) {
continue;
}
String order = orderAndSort[0];
String sort = orderAndSort[1];
orders.add(new OrderItem(order, StrUtil.equalsIgnoreCase("ASC", sort)));
}
page.setOrders(orders);
}
return page;
}
}
......@@ -12,12 +12,14 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.laker.admin.config.LakerConfig;
import com.laker.admin.framework.aop.Metrics;
import com.laker.admin.framework.model.PageResponse;
import com.laker.admin.framework.model.PageVO;
import com.laker.admin.framework.model.Response;
import com.laker.admin.module.sys.entity.SysRole;
import com.laker.admin.module.sys.entity.SysUser;
import com.laker.admin.module.sys.entity.SysUserRole;
import com.laker.admin.module.sys.pojo.FlowAssigneVo;
import com.laker.admin.module.sys.pojo.PwdQo;
import com.laker.admin.module.sys.pojo.UserDto;
import com.laker.admin.module.sys.service.ISysRoleService;
import com.laker.admin.module.sys.service.ISysUserRoleService;
import com.laker.admin.module.sys.service.ISysUserService;
......@@ -70,6 +72,14 @@ public class SysUserController {
return PageResponse.ok(pageList.getRecords(), pageList.getTotal());
}
@GetMapping("/pageComplexAll")
@ApiOperation(value = "复杂分页查询示例")
public PageResponse pageComplexAll(PageVO page, UserDto userDto) {
Page roadPage = page.toPage();
Page pageList = sysUserService.page(roadPage, userDto.queryWrapper());
return PageResponse.ok(pageList.getRecords(), pageList.getTotal());
}
@GetMapping("/getAll")
@ApiOperation(value = "获取所有用户")
......
package com.laker.admin.module.sys.pojo;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.apache.commons.lang.StringUtils;
@Data
public class UserDto {
@ApiModelProperty(value = "用户昵称")
private String nickName;
@ApiModelProperty(value = "性别")
private Integer sex;
@ApiModelProperty(value = "关键字")
private String keyword;
public <T> QueryWrapper<T> queryWrapper() {
QueryWrapper<T> queryWrapper = new QueryWrapper<>();
queryWrapper.eq(StringUtils.isNotEmpty(nickName), "nick_name", nickName);
queryWrapper.eq(sex != null, "sex", sex);
queryWrapper.and(StringUtils.isNotEmpty(keyword),
likeQueryWrapper -> likeQueryWrapper.like("user_name", keyword)
.or().like("nick_name", keyword));
return queryWrapper;
}
}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册