Mybatis分页插件PageHelper的使用(医院信息管理系统的药品查询)

一、maven中引入依赖

        <!--分页插件-->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.2.12</version>
        </dependency>

二、创建PageCondition< T > 分页对象类

public class PageCondition<T> {

    private Integer pageNum; //页码
    private Integer pageSize; //每页条目数
    private T condition; // 代表条件的对象

}

三、Dao层

 List<Drug> findList(Drug condition);
<select id="findList" resultType="edu.nchu.bootdemo.model.Drug">
        select
        id,
        drug_code drugCode,
        drug_name drugName,
        unit,
        price,
        update_time updateTime,
        del_flag delFlag,
        stock
        from drug_info d
        <where>
            <if test="drugCode!=null and drugCode!=''">
                or d.drug_code LIKE concat('%',#{drugCode},'%')
            </if>
            <if test="drugName!=null and drugName!=''">
                or d.drug_name LIKE concat('%',#{drugName},'%')
            </if>
            <if test="stock!=null and stock!=''">
                stock = #{stock},
            </if>
            <if test="unit!=null and unit!=''">
                or d.unit LIKE concat('%',#{unit},'%')
            </if>
            <if test="price!=null and price!=0">
                or d.price = price
            </if>
            AND d.del_flag = "0"
        </where>
    </select>

四、service层

    /**
     * 分页方法
     *
     * @param pageCondition 分页相关信息和查询条件
     * @return
     */
    public PageInfo<Drug> page(PageCondition<Drug> pageCondition) {
        return PageHelper.startPage(pageCondition.getPageNum(), pageCondition.getPageSize())
                .doSelectPageInfo(() -> drugDao.findList(pageCondition.getCondition()));
    }

五、Controller层

    /**
     * 实现分页的条件查询
     * @param pageCondition 包含分页对象和Drug
     * @return 返回分页对象
     */
    @PostMapping("/drug/find")
    public PageInfo<Drug> page(@RequestBody PageCondition<Drug> pageCondition){
        return drugService.page(pageCondition);
    }

六、执行过程

查询第一页数据(显示5条记录)

  1. 前台提交的数据
{
    "pageNum": 1,
    "pageSize": 5,
    "condition": {
        "drugCode": "",
        "drugName": "",
        "unit": "",
        "price": ""
    }
}
  1. 后台返回的数据
{
    "total": 11,
    "list": [
        {
            "id": "1300774599675482112",
            "drugCode": "000002",
            "drugName": "碘伏",
            "unit": "瓶",
            "price": 5,
            "updateTime": "2020-09-06 11:30:58",
            "delFlag": "0",
            "stock": 98
        },
        {
            "id": "1300774716902084608",
            "drugCode": "000009",
            "drugName": "药",
            "unit": "盒",
            "price": 20,
            "updateTime": "2020-09-06 11:30:58",
            "delFlag": "0",
            "stock": 55
        },
        {
            "id": "1300937451849781248",
            "drugCode": "000004",
            "drugName": "藿香正气水",
            "unit": "盒",
            "price": 56,
            "updateTime": "2020-09-03 08:28:01",
            "delFlag": "0",
            "stock": 93
        },
        {
            "id": "1300937503041261568",
            "drugCode": "000005",
            "drugName": "藿香正气胶囊",
            "unit": "盒",
            "price": 44,
            "updateTime": "2020-09-02 13:45:00",
            "delFlag": "0",
            "stock": 66
        },
        {
            "id": "1301154120765411328",
            "drugCode": "000006",
            "drugName": "VC银翘片",
            "unit": "盒",
            "price": 16,
            "updateTime": "2020-09-02 13:44:51",
            "delFlag": "0",
            "stock": 88
        }
    ],
    "pageNum": 1,
    "pageSize": 5,
    "size": 5,
    "startRow": 1,
    "endRow": 5,
    "pages": 3,
    "prePage": 0,
    "nextPage": 2,
    "isFirstPage": true,
    "isLastPage": false,
    "hasPreviousPage": false,
    "hasNextPage": true,
    "navigatePages": 8,
    "navigatepageNums": [
        1,
        2,
        3
    ],
    "navigateFirstPage": 1,
    "navigateLastPage": 3
}
  1. mybatis执行的sql语句
--  48  2020-09-20 15:13:21.392 DEBUG 17180 --- [o-18080-exec-10] e.n.bootdemo.dao.DrugDao.findList_COUNT  : ==>
 SELECT count(0)
 FROM drug_info d
 WHERE d.del_flag = "0";
--  ------------------------------------------------------------------------------------------------
--  49  2020-09-20 15:13:21.423 DEBUG 17180 --- [o-18080-exec-10] edu.nchu.bootdemo.dao.DrugDao.findList   : ==>
 select id, drug_code drugCode, drug_name drugName, unit, price, update_time updateTime, del_flag delFlag, stock
 FROM drug_info d
 WHERE d.del_flag = "0"
 LIMIT 5;
  1. 在mysql的执行结果
    在这里插入图片描述

在这里插入图片描述

查询第三页的数据

  1. 前台提交的数据
{
    "pageNum": 3,
    "pageSize": 5,
    "condition": {
        "drugCode": "",
        "drugName": "",
        "unit": "",
        "price": ""
    }
}
  1. 后台返回的数据
{
    "total": 12,
    "list": [
        {
            "id": "1307575377127936000",
            "drugCode": "010012",
            "drugName": "绿箭仙丹",
            "unit": "丹",
            "price": 66,
            "updateTime": "2020-09-20 07:00:38",
            "delFlag": "0",
            "stock": 44
        },
        {
            "id": "1307580383189143552",
            "drugCode": "010013",
            "drugName": "益达仙丹",
            "unit": "丹",
            "price": 66,
            "updateTime": "2020-09-20 07:20:32",
            "delFlag": "0",
            "stock": 88
        }
    ],
    "pageNum": 3,
    "pageSize": 5,
    "size": 2,
    "startRow": 11,
    "endRow": 12,
    "pages": 3,
    "prePage": 2,
    "nextPage": 0,
    "isFirstPage": false,
    "isLastPage": true,
    "hasPreviousPage": true,
    "hasNextPage": false,
    "navigatePages": 8,
    "navigatepageNums": [
        1,
        2,
        3
    ],
    "navigateFirstPage": 1,
    "navigateLastPage": 3
}
  1. mybatis执行的sql语句
--  59  2020-09-20 15:20:34.462 DEBUG 17180 --- [io-18080-exec-3] e.n.bootdemo.dao.DrugDao.findList_COUNT  : ==>
 SELECT count(0)
 FROM drug_info d
 WHERE d.del_flag = "0";
--  ------------------------------------------------------------------------------------------------
--  60  2020-09-20 15:20:34.494 DEBUG 17180 --- [io-18080-exec-3] edu.nchu.bootdemo.dao.DrugDao.findList   : ==>
 select id, drug_code drugCode, drug_name drugName, unit, price, update_time updateTime, del_flag delFlag, stock
 FROM drug_info d
 WHERE d.del_flag = "0"
 LIMIT 10, 5;
  1. 在mysql的执行结果
    在这里插入图片描述
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值