【java框架之spring框架】实现分页查询列表信息

分页查询

解决数据量庞大的情况下,一次查询过多数据。
一页一页的查询数据,每页查询少量数据即可。

示例 : 每页显示2条数据,共7条数据  
	总页数=总条数/每页大小+1
	6/2 = 3
	7/2 = 3+1

mybatis插件帮助我们进行分页
我们只需要告诉他当前查询第几页,每页显示多少条数据即可。
此插件会自动进行计算,把limit , 动态添加到sql语句中,
还可以帮助我们自动查询用户总数
-- 每页大小  已知条件 可以从前端传递给后端
-- 当前页码  已知条件 可以从前端传递给后端  (当前页码-1)*页数大小
-- 总条数    已知条件 可以通过查询得到
-- 总页数  
SELECT * FROM USER WHERE TYPE = 1 LIMIT 0,2  -- 1   limit 开始查询的位置,每页显示的大小
SELECT * FROM USER WHERE TYPE = 1 LIMIT 2,2  -- 2
SELECT * FROM USER WHERE TYPE = 1 LIMIT 4,2  -- 3
SELECT * FROM USER WHERE TYPE = 1 LIMIT 6,2  -- 4

-- 查询总条数
SELECT COUNT(*)FROM USER WHERE TYPE = 1

前端:

向后端请求 pageNum:当前页 pageSize:每页的大小(条数)

在这里插入图片描述

后端:

导入mybatis插件 分页jar包: pom.xml

	<!-- pagehelper依赖  分页jar包 -->
	<dependency>
		<groupId>com.github.pagehelper</groupId>
		<artifactId>pagehelper-spring-boot-starter</artifactId>
		<version>1.2.5</version>
	</dependency>

UserController:

接收请求 pageNum 、 pageSize

 @GetMapping(value = "/list")
    public CommonResult list(Integer pageNum,Integer pageSize){
        try {
            PageInfo<User> pageInfo = userService.list(pageNum,pageSize);
            return new CommonResult("",200,pageInfo.getList(),pageInfo.getTotal());
        }catch (Exception e){
            e.printStackTrace();
            return new CommonResult("查询失败",500,null);
        }
    }

UserService:

public PageInfo<User> list(int pageNum, int pageSize){
    // pageNum当前页面  pageSize每页大小
    PageHelper.startPage(pageNum, pageSize);
    List<User> list = userDao.list();//会动态向sql添加limit,并且额外会发出一条sql,查询总条数
    PageInfo<User> pageInfo = new PageInfo<>(list);//查询的数据,总条数封装在PageInfo里面
    return pageInfo;
}

UserDao:

List<User> list();

UserMapper:
分页操作需要嵌套查询。

 <resultMap id="userMap" type="User">
        <id column="id" property="id"></id>
        <result column="account" property="account"></result>
        <result column="gender" property="gender"></result>
        <result column="phone" property="phone"></result>
        <!--查询用户关联的部门-->
        <association property="dept" column="deptid" select="finddepts"></association>
        <!--查询用户分配的角色                                         cloumn="id" 为用户的id-->
        <collection property="roles" javaType="list" ofType="Role" column="id" select="findRole"></collection>
    </resultMap>

    <select id="list" resultMap="userMap">
        SELECT id,account,gender,phone,deptid FROM USER WHERE TYPE=1
    </select>
    <select id="finddepts" parameterType="int" resultType="Dept">
        SELECT name FROM dept WHERE id=#{id}
    </select>
    <select id="findRole" parameterType="int" resultType="Role">
        SELECT r.name FROM user_role ur LEFT JOIN ROLE r ON ur.roleid = r.id WHERE ur.userid = #{id}
    </select>

数据库用户信息:
在这里插入图片描述
前端分页显示:


在这里插入图片描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宋大米Pro

感谢小主大赏,留言可进互助群~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值