mybatis实现分页查询(两种方式:1pageHelper插件 2手写)

方法1:整合pageHelper分页插件

优点:快捷,只需要你有一个查询全部数据的方法即可

缺点:对于初学者来说,不了解内部的原理

前提:需要先实现一个最简单的 查询全部数据的方法,不会的可以先去搭建一个项目

        SpringBoot 整合mybatis、mybatis日志、并测试findAll查询数据库方法:

        https://blog.csdn.net/KangYouWei6/article/details/127021894

1.添加依赖

添加到pom.xml中的dependencies标签中

刷新maven

<!--pageHelper分页插件-->

<dependency>

    <groupId>com.github.pagehelper</groupId>

    <artifactId>pagehelper-spring-boot-starter</artifactId>

    <version>1.3.0</version>

</dependency>

2.配置 => properties / yml

注意yml的语法,开头那个必须顶格

pagehelper:

  helperDialect: mysql

  reasonable: true # 修改默认值

3.写方法

在UserService里面

//分页查询

List<User> findPage(Integer pageNo,Integer pageSize);

在UserServiceImpl里面

//分页查询

@Override

public List<User> findPage(Integer pageNo, Integer pageSize) {

    PageHelper.startPage(pageNo,pageSize);

    return userMapper.list();//这里的list方法是查询全部数据的方法

}

在UserController里面

//分页查询

@RequestMapping("findPage")

public List<User> findPage(int pageNo,Integer pageSize){

    return userService.findPage(pageNo,pageSize);

}

4.测试

在数据库中多添加几条数据

在启动类(HelloApplication)里面启动

在网页或者PostMan上输入

 localhost:8081/user/findPage?pageNo=1&pageSize=2

方法2:自己写

优点:对于初学者来说,可以了解分页查询内部的原理

缺点:比较麻烦

为什么用map

因为前面的findAll是查询出一些数据,直接用List<user> 这种接收就可以了

但是 分页查询,需要得到的结果是下图这种json数据

需要有 一个total 一个data,只用List是不行的

mapper层

List<User> selectPage(Integer pageNum, Integer pageSize);//分页查询
Integer countAll ();//统计

service层

List<User> selectPage(Integer pageNum, Integer pageSize);//分页查询

Integer countAll ();//统计

impl层

//分页查询

@Override

public List<User> selectPage(Integer pageNum, Integer pageSize) {

    pageNum = (pageNum - 1) * pageSize;

    return userMapper.selectPage(pageNum,pageSize);

}

//统计

@Override

public Integer countAll() {

    return userMapper.countAll();

}

controller层

/**

 * 分页查询

 * @param pageNum

 * @param pageSize

 * @return

 */

@GetMapping("/page")

public Map<String , Object> findPage(@RequestParam int pageNum, @RequestParam int pageSize){

        //分页查询的数据放到 data 里面

        List<User> data =userService.selectPage(pageNum,pageSize);

        //统计的数据放到 total 里面

        Integer total = userService.countAll();

        Map<String,Object> res = new HashMap<>();

        res.put("data",data);

        res.put("total",total);

        return res;



}

xml层

注意修改 resultType里面的user路径

<!--分页查询-->

<select id="selectPage" parameterType="Integer" resultType="com.mk.mkspringboot.entity.User">

    select * from sys_user limit #{pageNum}, #{pageSize}

</select>



<!--统计-->

<select id="countAll"  resultType="Integer">

    select count(*) from sys_user

</select>

url

http://localhost:8081/user/page?pageSize=5&pageNum=1

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值