说明:我用的是 Mybatis,只有分页使用的是 mybatis-plus:
1.添加依赖:
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.1.1</version>
</dependency>
2. 在application.yum配置:
使用的还是mybatis,若是报错,则使用 mybatis-plus的:
mybatis:
# 搜索指定包别名
typeAliasesPackage: com.lezhi.**.domain
# 配置mapper的扫描,找到所有的mapper.xml映射文件
mapperLocations: classpath*:mapper/**/*Mapper.xml
# 加载全局的配置文件
configLocation: classpath:mybatis/mybatis-config.xml
3.配置mybatis-plus分页,创建一个文件MybatisPlusConfig:
package com.xx.config;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import com.baomidou.mybatisplus.extension.plugins.pagination.dialects.MySqlDialect;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MybatisPlusConfig {
/**
* mybatis-plus分页插件
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
PaginationInterceptor page = new PaginationInterceptor();
page.setDialect(new MySqlDialect());
//若setDialect不能使用,则用这个 page.setDialectType("mysql");
return page;
}
}
4.前端传入参数:
主要是后两个分页参数:
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import lombok.extern.slf4j.Slf4j;
/**
* @创建人: liup
* @创建时间: 2021/4/28
* @描述: 创建这个类主要是为了 分页
*/
@Slf4j
@Data
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class RdArticleVo {
/**
* 类型:
*/
private Integer type;
/**
* 页码
*/
private Integer page;
/**
* 条数
*/
private Integer limit;
}
5.controller层:
@GetMapping("/list")
@ResponseBody
public AjaxResult getArticleList(@RequestBody RdArticleVo vo) {
PageUtils articleList=rdArticleService.getArticleList(vo);
return AjaxResult.success(articleList);
}
6. service层: 用的还是mybatis 不是 plus,所以不需要加额外的东西:
1.service:
public interface RdArticleService {
//要分页的,返回值用 PageUtils
PageUtils getArticleList(RdArticleVo vo);
}
2.实现类:
@Service
public class RdArticleServiceImpl implements RdArticleService {
@Resource
private RdArticleDao rdArticleDao;
@Override
public PageUtils getArticleList(RdArticleVo vo) {
IPage<ArticleVo> page = new Page<>(vo.getPage(),vo.getLimit());
IPage<ArticleVo> articleList = rdArticleDao.getArticleList(page,vo.getType());
return new PageUtils(articleList);
}
}
7.Mapper层:
@Mapper
public interface RdArticleDao {
IPage<ArticleVo> getArticleList(@Param("page")IPage<ArticleVo>page,@Param("type")Integer type);
}
8.mapper.xml:
未使用到参数 page,和没有分页的sql一致
9. postman测试:
10:PageUtils(分页工具类):
import com.baomidou.mybatisplus.core.metadata.IPage;
import java.io.Serializable;
import java.util.List;
/**
* 分页工具类
*
* @author Mark sunlightcs@gmail.com
*/
public class PageUtils implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 总记录数
*/
private int totalCount;
/**
* 每页记录数
*/
private int pageSize;
/**
* 总页数
*/
private int totalPage;
/**
* 当前页数
*/
private int currPage;
/**
* 列表数据
*/
private List<?> list;
/**
* 分页
* @param list 列表数据
* @param totalCount 总记录数
* @param pageSize 每页记录数
* @param currPage 当前页数
*/
public PageUtils(List<?> list, int totalCount, int pageSize, int currPage) {
this.list = list;
this.totalCount = totalCount;
this.pageSize = pageSize;
this.currPage = currPage;
this.totalPage = (int)Math.ceil((double)totalCount/pageSize);
}
/**
* 分页
*/
public PageUtils(IPage<?> page) {
this.list = page.getRecords();
this.totalCount = (int)page.getTotal();
this.pageSize = (int)page.getSize();
this.currPage = (int)page.getCurrent();
this.totalPage = (int)page.getPages();
}
public int getTotalCount() {
return totalCount;
}
public void setTotalCount(int totalCount) {
this.totalCount = totalCount;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getTotalPage() {
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
public int getCurrPage() {
return currPage;
}
public void setCurrPage(int currPage) {
this.currPage = currPage;
}
public List<?> getList() {
return list;
}
public void setList(List<?> list) {
this.list = list;
}
}