分页功能开发
集成分页插件pagehelper
mybatis-generator生成的代码是不带分页功能的,使用pagehelper插件来扩展分页功能。
PageHelper.startPage(1,1); //初始页,査几条
插件分页语句规则:调用startPage方法之后,执行的第一个select语句会进行分页。
public List<ChapterDto> list() {
PageHelper.startPage(1,1);
ChapterExample chapterExample = new ChapterExample();
List<Chapter> chapterList = chapterMapper.selectByExample(chapterExample);
List<ChapterDto> chapterDtoList = new ArrayList<ChapterDto>();
for (int i = 0, l = chapterList.size(); i < l; i++) {
Chapter chapter = chapterList.get(i);
ChapterDto chapterDto = new ChapterDto();
BeanUtils.copyProperties(chapter, chapterDto);
chapterDtoList.add(chapterDto);
}
return chapterDtoList;
}
效果如图,会自动生效。
分页参数前后端交互
package com.course.server.dto;
import java.util.List;
public class PageDto<T> {
/**
* 当前页码
*/
protected int page;
/**
* 每页条数
*/
protected int size;
/**
* 总条数
*/
protected long total;
protected List<T> list;
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
public long getTotal() {
return total;
}
public void setTotal(long total) {
this.total = total;
}
public List<T> getList() {
return list;
}
public void setList(List<T> list) {
this.list = list;
}
@Override
public String toString() {
final StringBuffer sb = new StringBuffer("PageDto{");
sb.append("page=").append(page);
sb.append(", size=").append(size);
sb.append(", total=").append(total);
sb.append(", list=").append(list);
sb.append('}');
return sb.toString();
}
}
扩展小知识:使用范型的地方都可以用Object代替,但是范型可以在编译期就发现问题,并且避免了代码中写强制类型转换。
Controller
@RequestBody
作用:
主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的);
@RestController
@RequestMapping("/admin/chapter")
public class ChapterController {
private static final Logger LOG = LoggerFactory.getLogger(ChapterController.class);
@Resource
private ChapterService chapterService;
@RequestMapping("/list")
public PageDto list(@RequestBody PageDto pageDto) {
LOG.info("pageDto: {}", pageDto);
chapterService.list(pageDto);
return pageDto;
}
}
ChapterService
其实就是利用PageDto,将数据装进去,然后再返回给前端即可啦。
@Service
public class ChapterService {
@Resource
private ChapterMapper chapterMapper;
public void list(PageDto pageDto) {
PageHelper.startPage(pageDto.getPage(), pageDto.getSize());
ChapterExample chapterExample = new ChapterExample();
List<Chapter> chapterList = chapterMapper.selectByExample(chapterExample);
PageInfo<Chapter> pageInfo = new PageInfo<>(chapterList);
pageDto.setTotal(pageInfo.getTotal());
List<ChapterDto> chapterDtoList = new ArrayList<ChapterDto>();
for (int i = 0, l = chapterList.size(); i < l; i++) {
Chapter chapter = chapterList.get(i);
ChapterDto chapterDto = new ChapterDto();
BeanUtils.copyProperties(chapter, chapterDto);
chapterDtoList.add(chapterDto);
chapterDtoList.add(chapterDto);
}
pageDto.setList(chapterDtoList);
}
}
前端请求
methods: {
list() {
let _this = this;
_this.$ajax.get('http://127.0.0.1:9000/business/admin/chapter/list',{
page: 1,
size: 1
}).then((response)=>{
console.log("查询大章列表结果:", response);
_this.chapters = response.data.list;
})
}
}
上面是写死的,看我下一篇 《前端分页组件的使用》。