• 分页前后端完整代码


    一、后端代码

    User实体类要继承PageVo

    1. package com.like.entity;
    2. import com.baomidou.mybatisplus.annotation.IdType;
    3. import com.baomidou.mybatisplus.annotation.TableId;
    4. import com.baomidou.mybatisplus.annotation.TableName;
    5. import com.like.common.PageVo;
    6. import lombok.AllArgsConstructor;
    7. import lombok.Data;
    8. import lombok.EqualsAndHashCode;
    9. import lombok.NoArgsConstructor;
    10. @Data
    11. @AllArgsConstructor
    12. @EqualsAndHashCode(callSuper = false)//当EqualsAndHashCode注解在类上,会自动为该类提供 hashCode() 和 equals() 方法。
    13. @TableName("user")//@TableName 注解用来将指定的数据库表和 JavaBean 进行映射
    14. public class User extends PageVo {
    15. private static final long serialVersionUID = 1L;
    16. /**
    17. id
    18. “value”:设置数据库字段值
    19. “type”:设置主键类型、如果数据库主键设置了自增建议使用“AUTO”
    20. */
    21. @TableId(value = "id",type = IdType.AUTO)
    22. private Long id;
    23. /**
    24. * 姓名
    25. */
    26. private String name;
    27. /**
    28. * 性别
    29. */
    30. private String sex;
    31. /**
    32. * 手机号
    33. */
    34. private String phone;
    35. /**
    36. * 头像
    37. */
    38. private String avatar;
    39. }

    getList方法修改为

    1. @GetMapping("/getList")
    2. public CommonDto<PageDto<User>> getList(User user){
    3. CommonDto<PageDto<User>> commonDto = new CommonDto();
    4. PageDto<User> userList = userService.getList(user);
    5. commonDto.setContent(userList);
    6. return commonDto;
    7. }

    service层也做修改

    1. package com.like.service;
    2. import com.baomidou.mybatisplus.extension.service.IService;
    3. import com.like.common.PageDto;
    4. import com.like.entity.User;
    5. import java.util.List;
    6. public interface UserService extends IService {
    7. PageDto getList(User user);
    8. }
    1. package com.like.service.impl;
    2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
    3. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
    4. import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
    5. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
    6. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
    7. import com.like.common.PageDto;
    8. import com.like.entity.User;
    9. import com.like.mapper.UserMapper;
    10. import com.like.service.UserService;
    11. import jakarta.annotation.Resource;
    12. import org.springframework.stereotype.Service;
    13. import java.util.List;
    14. @Service
    15. public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
    16. @Resource
    17. private UserMapper userMapper;
    18. @Override
    19. public PageDto<User> getList(User user) {
    20. LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
    21. //判断前端是否传来有参数,如果有参数,就使用这个构造条件
    22. if (ObjectUtils.isNotEmpty(user.getName())) {
    23. lambdaQueryWrapper.like(User::getName,user.getName());
    24. }
    25. //封装分页条件
    26. Page<User> page = new Page<>(user.getPage(),user.getSize());
    27. //根据分页条件和查询条件来查询数据,并封装成selectPage对象
    28. Page<User> selectPage = userMapper.selectPage(page, lambdaQueryWrapper);
    29. //selectPage.getTotal()为符合条件的数据总数
    30. //selectPage.getRecords()为数据
    31. PageDto<User> userPageDto = new PageDto<>();
    32. userPageDto.setTotal(selectPage.getTotal());
    33. userPageDto.setList(selectPage.getRecords());
    34. return userPageDto;
    35. }
    36. }

    二、前端

    修改完后端代码后,我们可以看到前端的数据不回显了,并且浏览器报错,这是正常的,因为pageDto中的数据前端没有传过来

    可以这么写

    1. params:{
    2. name:this.query.name, //参数让其等于输入框输入的name
    3. page:this.query.page,
    4. size:this.query.size
    5. }

    再次刷新浏览器可以看到控制台中后台传过来的数据

    在data.content.list中,并且total也有,所以修改为

    1. getUserList(){
    2. this.axios.get("http://localhost:3333/user/getList",{
    3. params:{
    4. name:this.query.name, //参数让其等于输入框输入的name
    5. page:this.query.page,
    6. size:this.query.size
    7. }
    8. }).then((resp)=>{
    9. console.log(resp,'resp');
    10. this.tableData = resp.data.content.list;
    11. this.total = resp.data.content.total;
    12. });
    13. }

    那么如何让ElementUI的组件中显示出total数据呢,首先定义数据total,然后在标签中修改默认值

     

    三、每页数据大小实现

    现在我们来实现分页组件中的handleSizeChange和handleCurrentChange方法,从而实现每页数据大小的控制

    我们可以看到,当选择每页条数的时候,控制台会打印条数,我们可以把这个参数传给后台,然后查询,具体做法如下

    1. methods: {
    2. handleEdit(index, row) {
    3. console.log(index, row);
    4. },
    5. handleDelete(index, row) {
    6. console.log(index, row);
    7. },
    8. handleSizeChange(val) {
    9. console.log(`每页 ${val} 条`);
    10. this.query.size = val;
    11. this.getUserList()
    12. },
    13. handleCurrentChange(val) {
    14. console.log(`当前页: ${val}`);
    15. this.query.page = val;
    16. this.getUserList()
    17. },
    18. getUserList(){
    19. this.axios.get("http://localhost:3333/user/getList",{
    20. params:{
    21. name:this.query.name, //参数让其等于输入框输入的name
    22. page:this.query.page,
    23. size:this.query.size
    24. }
    25. }).then((resp)=>{
    26. console.log(resp,'resp');
    27. this.tableData = resp.data.content.list;
    28. this.total = resp.data.content.total;
    29. });
    30. }
    31. },

    先把这两个方法的val赋值给query的相关属性,然后调用get请求,前端就会传递新的query给后端,后端响应请求

  • 相关阅读:
    开源与闭源:大模型发展的双重走向
    分布式链路追踪技术
    擎创技术流 | ClickHouse实用工具—ckman教程(4)
    mybatis-plus 连接oracle数据库查询无任何报错 Row: 0
    python读取大文件md5校验性能优化比较
    线程池的4种创建方式
    Web容器和Servlet容器、Spring和SpringMvc
    rabbitmq-exporter部署方式
    docker安装oracle
    ELK下载(Elasticsearch、Logstash、Kibana)
  • 原文地址:https://blog.csdn.net/m0_63732435/article/details/133497626