MyBatis-Plus 分页、排序联合使用

认知

其实两者联合使用非常简单,只需要在使用分页插件的基础上使用其提供的orderByDesc/orderByAsc就能完美融合。写这篇博客只是给一些初学者一个方便的整理而已。下面会先给出完整的使用情况,在到后面分别解释两者的用法。以方便只关心这个用法或者赶时间的朋友。处于保密性考虑,我将大部分字段进行了删减,将项目名也进行了修改

Controller

@Slf4j
@Validated
@RestController
@RequestMapping("/com-organization")
public class ComOrganizationController {
@PostMapping(value = "/getPage")
public Response> getPage(@RequestBody @Valid ComOrganizationQueryParam param, BindingResult bindingResult) throws Exception {
        if (bindingResult.hasErrors()) {
            return Response.failed("参数有误:" + bindingResult.getFieldError().toString());
        }
        QueryWrapper queryWrapper = new QueryWrapper();
        //如果前端有值传入 则将其赋值。无则就不赋值。为后面设置查询条件铺路
        queryWrapper.eq(param.getCompanyId() != null && param.getCompanyId() != 0, "company_id", param.getCompanyId());
        queryWrapper.eq(param.getDepartmentId() != null && param.getDepartmentId() != 0, "department_id", param.getDepartmentId());
        //设置查询条件
        queryWrapper.select(BeanUtils.getSqlSelect(ComOrganization.class));
        //根据id进行顺序排序 id可用替换为你想进行排序的字段
        queryWrapper.orderByAsc("id");
        //将页码与每页展示数量传入
        IPage page = new Page<>(Long.parseLong(param.getPageNumber()), Long.parseLong(param.getPageSize()));
        //第三个字段为缓存设置的key值
        return comOrganizationService.getPage(page, queryWrapper,param.toString()+param.getPageNumber()+param.getPageSize());
    }
    }

Service 

public interface ComOrganizationService extends IService {
	//Response 为自定义的统一返回方法  可以自己替换为自己想返回的类型
    Response getPage(IPage page, QueryWrapper queryWrapper,String key);
    
}

Impl 

	//项目使用redis缓存 自定义key值 这样能保证唯一,方便使用且易于查看
    @Cacheable(cacheNames = "ComOrganization", key = "#root.targetClass.simpleName+':'+#root.methodName+':'+#key")
    @Override
    public Response getPage(IPage page, QueryWrapper queryWrapper,String key) {
        IPage poPage = baseMapper.selectPage(page, queryWrapper);
        return Response.data(poPage);
    }

Entity 

/**
 * 

* 租户机构表 *

* * @author campchen * @since 2019-04-28 */ @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @TableName("com_organization") public class ComOrganization implements Serializable { private static final long serialVersionUID = 1L; @TableField("id") private Long id; /** * 公司ID */ @TableField("company_id") private Long companyId; /** * 负责部门ID */ @TableField("department_id") private Long departmentId; }

Entityparam

/**
 * 

* 查询租户机构表参数 *

* * @author campchen * @since 2019-04-28 */ @Data @EqualsAndHashCode(callSuper = false) public class ComOrganizationQueryParam extends CommonParam { @ApiModelProperty(value = "公司ID") private Long companyId; @ApiModelProperty(value = "负责部门ID") private Long departmentId; }

 CommonParam

@Data
public abstract class CommonParam implements Serializable {

	/**
	 * @Fields serialVersionUID
	 */
	private static final long serialVersionUID = 1L;

	/**
	 * 条数
	 */
	@ApiModelProperty(value = "条数", example = "5")
	private String pageSize = "5";

	/**
	 * 当前页
	 */
	@ApiModelProperty(value = "当前页", example = "1")
	private String pageNumber = "1";

}

Mapper

/**
 * 

* 机构表 Mapper 接口 *

* * @author campchen * @since 2019-04-28 */ public interface ComOrganizationMapper extends BaseMapper { }

Mapper.xml 







至此 就完成了整个mybatisplus 的分页排序的代码。其提供了强大的功能,不需要我们再去编写其余代码。

Page

分页插件没有比官网介绍更清楚的了。那边清楚的讲述了来龙去脉。

https://mp.baomidou.com/guide/page.html

orderByAsc

orderByAsc(R... columns)
orderByAsc(boolean condition, R... columns)

例: orderByAsc("id", "name")--->order by id ASC,name ASC

orderByDesc

orderByDesc(R... columns)
orderByDesc(boolean condition, R... columns)

例: orderByDesc("id", "name")--->order by id DESC,name DESC

后记

好长一段时间没有写博客了,一方面忙,一方面也没有碰到什么需要解决的困难。这里是做为一个新手上手mybatisplus的一些记录。作为一个成长的记录把。加油!!!

你可能感兴趣的:(MyBatis-Plus 分页、排序联合使用)