函数式接口FunctionInterface
特征:
接口中只定义了一个方法。
接口中允许存在重写Object类的抽象方法。
PageAction .java
@FunctionalInterface
public interface PageAction {
List> execute();
}
BaseCurdService.java 分页方法定义,当使用分页时,我们并不知道来自于那个Mapper,这里我们就可以使用FunctionInterface来定义这个函数,使用时只需要实现具体的接口即可。
@Override
public Pagination findbyPage(PageRequest pageRequest, PageAction action) {
PageHelper.startPage(pageRequest.getPageNum(), pageRequest.getPageSize(), pageRequest.getOrderBy());
//执行DB操作,PageHelper自动对分页进行查询
List> list = action.execute();
PageInfo pageInfo = new PageInfo(list);
Pagination pagination = new Pagination(list);
pagination.setData(pageInfo.getList());
pagination.setPageNum(pageInfo.getPageNum());
pagination.setPageSize(pageInfo.getPageSize());
pagination.setPages(pageInfo.getPages());
pagination.setTotal(pageInfo.getTotal());
return pagination;
}
public Pagination findbyPage(PageRequest pageRequest, UserDTO userDTO) {
return super.findbyPage(pageRequest, () -> userMapper.selectAll());
}