手拉手全栈springboot+vue2+Element实现分页

举报
QGS 发表于 2023/12/19 21:32:46 2023/12/19
【摘要】 手拉手全栈springboot+vue2+Element实现分页


环境介绍

技术栈

springboot+mybatis-plus+mysql+vue2+Element

软件

版本

mysql

8

IDEA

IntelliJ IDEA 2022.2.1

JDK

1.8

Spring Boot

2.7.13

mybatis-plus

3.5.3.2



后端


实体类、持久层、服务层使用Mybatis-Plus逆向工程生成


实体类

@TableName(value ="t_address")
@Data
public class TAddress implements Serializable {
    /**
     * 
     */
    @TableId(type = IdType.AUTO)
    private Integer id;

    /**
     * 
     */
    private String address;

    @TableField(exist = false)
    private static final long serialVersionUID = 1L;
}



持久层(mapper)


@Mapper
public interface TAddressMapper extends BaseMapper<TAddress> {

    Integer getTotal();

}


TAddressMapper.xml


<select id="getTotal">
    SELECT count(*) FROM `t_address`
</select>




服务层

public interface TAddressService extends IService<TAddress> {

    Integer getTotal();
}


@Service
@DS("sys2")
public class TAddressServiceImpl extends ServiceImpl<TAddressMapper, TAddress>
    implements TAddressService {

    @Autowired
    private   TAddressMapper tAddressMapper;

    @Override
    public Integer getTotal() {
        return tAddressMapper.getTotal();
    }
}


控制层


@GetMapping("/getpage")
public Map<String,Object> getPageTAddress(@RequestParam(defaultValue = "1") int pageNum,
                                          @RequestParam(defaultValue = "10") int pageSize) {
    PageHelper.startPage(pageNum,pageSize);
    List<TAddress> data = tAddressService.list();
    Integer  total= tAddressService.getTotal();
     HashMap<String, Object> res = new HashMap<>();
     res.put("data",data);
     res.put("total",total);
    return res;
}








前端

Pagination.vue

<template>
    <div class="block">
        <el-table
    :data="tableData"
    style="width: 100%"
    :row-class-name="tableRowClassName">
    <!-- <el-table-column
      prop="date"
      label="日期"
      width="180">
    </el-table-column> -->
    <el-table-column
      prop="id"
      label="ID"
      width="180">
    </el-table-column>
    <el-table-column
      prop="address"
      label="地址">
    </el-table-column>
  </el-table>

      <el-pagination
        @size-change="handleSizeChange"
        @current-change="handleCurrentChange"
        :current-page="currentPage4"
        :page-sizes="[10,20,30,40]"
        :page-size="pageSize"
        layout="total, sizes, prev, pager, next, jumper"
        :total="total">
      </el-pagination>
    </div>
  </template>

<style>
  .el-table .warning-row {
    background: oldlace;
  }

  .el-table .success-row {
    background: #f0f9eb;
  }
</style>


  <script>
  export default {
    data() {
      return {
        tableData: [],
        total: 0,
        pageNum: 1,
        pageSize: 10
      }
    },
    created() {
      this.load()
    },
    methods: {
      load() {
        this.$add.get("/getpage?"+"pageNum="+this.pageNum+"&pageSize="+this.pageSize).then((response)=>{
          console.log(response)
      this.tableData = response.data.data
      this.total = response.data.total
      })

      
      },
      handleSizeChange(pageSize) {
        console.log(pageSize)
        this.pageSize = pageSize
        this.load()
      },
      handleCurrentChange(pageNum) {
        console.log(pageNum)
        this.pageNum = pageNum
        this.load()
      }
    }
  }
  </script>





【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。