配置类
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
@MapperScan({"cn.gcfc.admin.mapper"})
@Configuration
public class MybatisConfig {
//引入分页插件
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor(DbType.MYSQL);
// 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求 默认false
paginationInnerInterceptor.setOverflow(true);
// 设置最大单页限制数量,默认 500 条,-1 不受限制
paginationInnerInterceptor.setMaxLimit(1000L);
interceptor.addInnerInterceptor(paginationInnerInterceptor);
return interceptor;
}
}
使用
import com.wuxian.utl.PageResult;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, UserDO> implements UserService {
@Override
public PageResult<UserVO> getUserPage(UserParam userParam) {
LambdaQueryWrapper<UserDO> userEq = Wrappers.<UserDO>lambdaQuery()
.like(ObjectUtil.isNotEmpty(userParam.getUserName()), UserDO::getUserName, userParam.getUserName());
Page<UserDO> page = this.page(new Page<>(userParam.getCurrent(), userParam.getSize()), userEq);
List<UserDO> userDOList = page.getRecords();
if (ObjectUtil.isEmpty(userDOList)) {
return PageResult.page(new ArrayList<>(), page.getCurrent(), page.getSize(), page.getTotal());
}
List<UserVO> userVOList = userDOList.stream().map(item -> {
UserVO userVO = new UserVO();
BeanUtil.copyProperties(item, userVO);
return userVO;
}).collect(Collectors.toList());
return PageResult.page(userVOList, page.getCurrent(), page.getSize(), page.getTotal());
}
}
PageResult
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@Data
@ApiModel(value = "分页结果")
public class PageResult<T> {
@ApiModelProperty(value = "总页数")
private long page;
@ApiModelProperty(value = "当前页")
private long current;
@ApiModelProperty(value = "每页显示条数")
private long size;
@ApiModelProperty(value = "总条数")
private long total;
@ApiModelProperty(value = "具体信息")
private List<T> records;
public PageResult() {
}
public static <T> PageResult<T> page() {
PageResult<T> pageResult = new PageResult<>();
pageResult.setRecords(new ArrayList<>());
return pageResult;
}
public static <T> PageResult<T> page(List<T> content, Page page) {
return page(content, page.getCurrent(), page.getSize(), page.getTotal());
}
public static <T> PageResult<T> page(List<T> content, int current, int size, long total) {
return page(content, current, (long) size, total);
}
public static <T> PageResult<T> page(List<T> content, int current, int size, int total) {
return page(content, current, (long) size, total);
}
public static <T> PageResult<T> page(List<T> content, long current, long size, long total) {
PageResult<T> pageResult = new PageResult<>();
pageResult.setRecords(content);
pageResult.setSize(size);
pageResult.setTotal(total);
pageResult.setCurrent(current);
if (size != 0) {
pageResult.setPage(total / size);
}
return pageResult;
}
}