首页 > 其他分享 >用户分页查询展示

用户分页查询展示

时间:2023-04-18 17:46:30浏览次数:40  
标签:username 分页 pageNo 展示 searchModel 查询 getUserList pageSize total

如下图,点击查询按钮,显示用户数据;或者输入用户名、电话号码进行查询。

以下标签的使用,查看组件 | Element

前端页面代码

src/views/sys/user.vue:实现了查询、分页功能,未实现新增、编辑、删除功能。

<template>
  <div>
    <!-- 查询栏、(el-card:卡片)-->
    <el-card class="box-card">
      <el-row>
        <el-col :span="20">
          <el-input size="medium" v-model="searchModel.username" placeholder="用户名" clearable></el-input>
          <el-input size="medium" v-model="searchModel.phone" placeholder="电话号码" clearable></el-input>
          <el-button size="medium" type="primary" @click="getUserList()" icon="el-icon-search" round>查询</el-button>
        </el-col>
        <el-col :span="4" align="right">
          <el-button size="medium" type="primary" icon="el-icon-plus" round>新增</el-button>
        </el-col>
      </el-row>
    </el-card>

    <!-- 结果列表、-->
    <el-card>
      <el-table :data="userList" stripe style="width: 100%">
        <el-table-column label="序号" width="100" align="center">
          <template scope="scope">
            {{(searchModel.pageNo - 1) * searchModel.pageSize + scope.$index + 1}}
          </template>
        </el-table-column>
        <el-table-column prop="id" label="id" width="180" align="center">
        </el-table-column>
        <el-table-column prop="username" label="用户名" width="180" align="center">
        </el-table-column>
        <el-table-column prop="avatar" label="头像" width="180" align="center">
          <template slot-scope="scope">
            <el-avatar shape="square" size="medium" :src="scope.row.avatar"></el-avatar>
          </template>
        </el-table-column>
        <el-table-column prop="phone" label="电话" width="180" align="center">
        </el-table-column>
        <el-table-column prop="email" label="邮箱" align="center">
        </el-table-column>
        <el-table-column label="操作" width="180" align="center">
          <template slot-scope="scope">
            <el-button size="medium" type="primary" icon="el-icon-edit" @click="handleEdit(scope.$index, scope.row)"
              circle></el-button>
            <el-button size="medium" type="danger" icon="el-icon-delete" @click="handleDelete(scope.$index, scope.row)"
              circle></el-button>
          </template>
        </el-table-column>
      </el-table>
    </el-card>

    <!-- 分页、(在main.js修改中文显示)-->
    <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
      :current-page="searchModel.pageNo" :page-sizes="[5, 10, 20, 50]" :page-size="searchModel.pageSize"
      layout="->, total, sizes, prev, pager, next, jumper" :total="total">
    </el-pagination>
  </div>

</template>

<script>
  // 导入userManage.js文件,@表示src目录
  import userApi from '@/api/userManage'

  export default {
    data() {
      return {
        searchModel: {
          /* pageNo:显示第几页,初始显示第一页 */
          pageNo: 1,
          /* pageSize:每页显示多少条,初始显示5条/页 */
          pageSize: 5,
          username: null,
          phone: null,
        },
        // total总条数
        total: 0,
        //结果列表数据
        userList: []
      }
    },
    methods: {
      // 方法:显示n条/页
      handleSizeChange(pageSize) {
        this.searchModel.pageSize = pageSize;
        this.getUserList();
      },
      // 方法:显示第n页
      handleCurrentChange(pageNo) {
        this.searchModel.pageNo = pageNo;
        this.getUserList();
      },
      //方法:查询用户数据
      getUserList() {
        //调用userApi对象(@/api/userManage.js)里的getUserList()方法
        // then()表示回调后要干的事情
        userApi.getUserList(this.searchModel).then(response => {
          //取出响应数据里的rows,并赋值给userList[]
          this.userList = response.data.rows;
          // 总条数
          this.total = response.data.total;
        });
      }
    },
    // 构造函数,自动执行一次,查询用户数据
    created() {
      this.getUserList();
    }
  };
</script>

<style>
  .box-card .el-input {
    width: 150px;
    margin-right: 15px;
  }
</style>

src/api/userManage.js:供src/views/sys/user.vue中的getUserList()方法使用

import request from '@/utils/request'

export default{
  // 用户查询
  getUserList(searchModel){
    return request({
      url:'/user/list',
      method:'get',
      //参数
      params:{
        pageNo:searchModel.pageNo,
        pageSize:searchModel.pageSize,
        username:searchModel.username,
        phone:searchModel.phone
      }
    });
  }
}

src/App.vue:全局配置,边距,卡片下边距

后端代码

src\main\java\com\example\sys\controller\UserController.java

getUserList():分页查询

/**
 * 分页查询
 * @param username (required = false:非必要参数)
 * @param phone 非必要参数
 * @param pageNo 显示第几页,当前页码
 * @param pageSize 每页显示多少条
 * @return
 */
@GetMapping("/list")
public Result<Map<String,Object>> getUserList(@RequestParam(value = "username",required = false) String username,
                                              @RequestParam(value = "phone",required = false) String phone,
                                              @RequestParam(value = "pageNo") Long pageNo,
                                              @RequestParam(value = "pageSize") Long pageSize){
    //LambdaQueryWrapper: 条件构造器是MyBatis-Plus中提供的一个用于构造 SQL 查询条件的工具类
    LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
    //StringUtils.hasLength(username):表示判断username是否有值,为true才调用eq()方法
    wrapper.eq(StringUtils.hasLength(username),User::getUsername,username);
    wrapper.eq(StringUtils.hasLength(phone),User::getPhone,phone);

    Page<User> page= new Page<>(pageNo,pageSize);
    userService.page(page,wrapper);
    Map<String,Object> data = new HashMap<>();
    //total: 条数
    data.put("total",page.getTotal());
    //rows: userList记录
    data.put("rows",page.getRecords());
    return Result.success(data);
}

 

标签:username,分页,pageNo,展示,searchModel,查询,getUserList,pageSize,total
From: https://www.cnblogs.com/lwj0126/p/17330339.html

相关文章

  • MongoDB4.2中索引的查询计划: 提高查询效率的关键Query Plans
    MongoDB查询优化器处理查询并为给定可用索引的查询选择最有效的查询计划。然后,查询系统在每次运行查询时都使用此查询计划。查询优化器仅缓存那些可以有多个可行计划的查询形状的计划。对于每个查询,查询计划程序在查询计划缓存中搜索适合查询形状的条目。如果没有匹配的条目,则......
  • 1 哈希类型、 2 列表类型 、3 集合类型、 4 有序集合(zset) 、5 慢查询 、6 pipeline与
    目录1哈希类型2列表类型3集合类型4有序集合(zset)5慢查询6pipeline与事务7发布订阅8Bitmap位图9HyperLogLog1哈希类型###1---hget,hset,hdelhgetkeyfield#获取hashkey对应的field的value时间复杂度为o(1)hsetkeyfieldvalue#设置hashkey对应的field的value......
  • redis高级-day2——redis哈希类型、redis列表类型、redis集合类型、redis有序集合类型
    目录一、哈希类型二、列表类型三、集合类型四、有序集合(zset)五、慢查询六、pipeline与事务七、发布订阅八、Bitmap位图九、HyperLogLog十、作业1、http协议详情,http协议版本,http一些请求头2、如何实现服务器给客户端发送消息,websocket是什么?用过吗3、悲观锁和乐观锁,如何实现一、......
  • sql查询字段个数
    看具体是什么数据库,以oracle,mysql,sqlserver分别回答。1、oracle:select count(*) from user_tab_cols where table_name='表名';--表名含英文的话应为英文大写字母结果如图:2、mysql:select count(*) from information_schema.COLUMNS where table_name='表名';--表......
  • 查询sqlserver列名,行数及表说明
    查询sqlserver表名,行数及表说明SELECTD.NAMETABLE_NAME,B.ROWSTABLE_ROWS,F.VALUETABLE_COMMENTFROMSYSOBJECTSDLEFTJOINSYS.EXTENDED_PROPERTIESFOND.ID=F.MAJOR_IDANDF.MINOR_ID=0LEFTJOINSYSINDEXESBOND.ID=B.IDANDB......
  • 15天玩转redis —— 第七篇 同事的一次缓存操作引起对慢查询的认识
       上个星期同事做一个业务模块,需要将一个80M的数据存入到redis缓存中,想法总是好的,真操作的时候遇到了HSet超时,我们使用的是C#的StackExchange.Redis驱动。<redisCacheClientallowAdmin="true"ssl="false"connectTimeout="5000"abortConnect="false"database="......
  • 如何查询经纬度--地理盲的挣扎
    文档说明:仅仅是一个记录而已;2023-04-18缘由:地理盲鄂A车牌,第一反应是鄂尔多斯(丢人)海事局发布坐标(36-02.70N120-16.87E、36-02.20N120-17.00E),看着一脸懵,最基本的大概方向和位置都判断不出来知识陷阱笔记鄂尔多斯在内蒙古鄂湖北的简称WGS84是地球坐标系,不......
  • Oracle将想要查询的时间点集合作为一个新表,去另一个表里只查询规定时间点的数据
    最近遇到一个新需求,我们需要在一个表中选取特定时间段内一些固定时间点的数据(比如只想要取每个小时零点的数据),废物的我想不出来,让大佬教的,记录一下。假如这个表长这样,名字就叫Table吧,需要取到每个小时零点的高度 TIMEHEIGHT2023-04-1800:00:0012023-04-1801:00......
  • 开发在线客服系统聊天界面,JS实现相邻两条消息之间间隔小于3分钟,就不展示消息时间
    我在开发一个客服聊天界面,每条消息都有发送时间,我想要实现相邻两条消息之间间隔小于3分钟的就不展示发送时间.下面就是消息的JSON结构,里面的time就是发送时间message={"msg_id":629255,"time":"2023-02-1100:41:04","content":"chatGPT","mes_type":"vi......
  • MyBatis查询功能
    如果查询出的数据只有一条,可以通过实体类对象接收List集合接收Map集合接收,结果如果查询出的数据有多条,一定不能用实体类对象接收,会抛异常TooManyResultsException,可以通过实体类类型的LIst集合接收Map类型的LIst集合接收在mapper接口的方法上添加@MapKey注解查询......