第02讲:uni-pagination实现表格分页查询

API帮助文档

        在uniapp中通过uni-pagination组件实现表格内容的分页查询,实现思路和简单,分为两个步骤:

1、使用MySQL的Limit语句按照要求查询出符合分页要求的记录;

2、通过MySQL的COUNT函数获取该表中的全部记录;

接下来我们结合前两个章节的内容实现表格的分页查询。

一、分页查询微服务

        在idea中使用通用Mapper实现单表的分页查询,用户访问controller时需要传递2个参数,分别是从第page条记录开始查,每次查询pageSize条数据,controller按照要求从数据库中查询相关的记录并返回,同时返回该表中的全部记录。以下是相关代码:

mapper.xml

<select id="selectByLimt" parameterType="int" resultMap="BaseResultMap">
    select * from user order by id desc limit #{page},#{pageSize}
  </select>

controller

@Autowired(required = false)
    private UserMapper userMapper;

    /**
     * 测试查询
     * @return
     */
    @GetMapping("/t1")
    @ResponseBody
    @CrossOrigin(origins = "*")//允许跨源请求
    public HttpResult getuser(int pageIndex,int pageSize){
        List<User> users = userMapper.selectByLimt((pageIndex-1)*pageSize,pageSize);
        int rows = userMapper.selectCount(null);//查询总条数
        return new HttpResult(200,null,users,rows);
    }

二、分页查询uniapp

在uniapp中使用uni-table,在表格下方添加uni-pagination分页器

<!-- 分页器-->
		<uni-table
		current="1"
		pageSize="6"
		total="10"
		/>

分页器需要3个参数,分别是:

data() {
			return {
				userList:null,
				pageIndex: 1,  //分页器页码
				pageSize: 6,  //分页器每页显示数据的条数
				pageTotal: 0  //分页器数据总条数
			}
		}

运行后页面效果如下:

点击分页器的监听函数

// 分页器点击监听
pageChanged(e){
				console.log(e.current); //打印出当前点击的页码
				this.pageIndex = e.current; //给变量赋值
				this.requestUser();
			}

网络请求函数:

/* 请求用户列表*/
			requestUser(){
				/*uni-app的API发送http请求,默认get*/
				uni.request({
				    url: 'http://localhost:8082/user/t1', //仅为示例,并非真实接口地址。
				    data: {
						pageIndex: this.pageIndex,
						pageSize: this.pageSize
					},
					success: (res) => {
				        console.log(res.data);
						this.userList = res.data.data;
						this.pageTotal = res.data.total
				    }
				});
			}

最终效果:

 三、完整代码

1.HttpResult

@Data
@AllArgsConstructor
public class HttpResult {
    private int code; //200代表成功,500代表失败
    private String msg;//请求失败的提示信息
    private Object data; //请求成功后响应的结果
    private int total; //列表总条数
}

2.UserMapper

public interface UserMapper extends Mapper<User> {
    public int modify(User user);
    public List<User> selectByLimt(int page,int pageSize);
}

3.UserMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jf.demo5.dao.user.UserMapper">
  <resultMap id="BaseResultMap" type="com.jf.demo5.entity.user.User">
    <!--
      WARNING - @mbg.generated
    -->
    <result column="id" jdbcType="BIGINT" property="id" />
    <result column="name" jdbcType="VARCHAR" property="name" />
    <result column="age" jdbcType="INTEGER" property="age" />
    <result column="email" jdbcType="VARCHAR" property="email" />
  </resultMap>

<update id="modify" parameterType="com.jf.demo5.entity.user.User">
  update user set name=#{name} where id=#{id}
</update>

  <select id="selectByLimt" parameterType="int" resultMap="BaseResultMap">
    select * from user order by id desc limit #{page},#{pageSize}
  </select>
</mapper>

4.UserController

@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired(required = false)
    private UserMapper userMapper;

    /**
     * 测试查询
     * @return
     */
    @GetMapping("/t1")
    @ResponseBody
    @CrossOrigin(origins = "*")//允许跨源请求
    public HttpResult getuser(int pageIndex,int pageSize){
        List<User> users = userMapper.selectByLimt((pageIndex-1)*pageSize,pageSize);
        int rows = userMapper.selectCount(null);//查询总条数
        return new HttpResult(200,null,users,rows);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值