天天看點

SpringBoot Mybatis-Plus 分頁模糊查詢 分頁參數和響應封裝

上一篇 SpringBoot內建Mysql、Mybatis、Mybatis-Plus,實作增删改查

一、前言

Mybatis-Plus封裝了分頁操作,簡單配置一下就可以用。我這裡還簡單做了分頁請求參數的封裝和響應的封裝。

二、Sql語句

CREATE TABLE `user_info` (
	`id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '使用者id',
	`username` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '使用者名' COLLATE 'utf8mb4_general_ci',
	`password` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '密碼' COLLATE 'utf8mb4_general_ci',
	`is_deleted` INT(2) NOT NULL DEFAULT '0' COMMENT '是否删除 0-未删除 1-已删除',
	`create_time` DATETIME NOT NULL COMMENT '建立時間',
	`update_time` DATETIME NOT NULL COMMENT '更新時間',
	PRIMARY KEY (`id`) USING BTREE
)
COLLATE='utf8mb4_general_ci'
ENGINE=InnoDB
AUTO_INCREMENT=3
;
           

三、配置分頁

@Configuration
public class MyConfiguration {
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        // 資料庫分頁
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }
}
           
  • 這裡分頁類型

    DbType.MYSQL

四、分頁請求參數和響應的封裝

BasePageParam

分頁參數類

package com.llh.springbootpage.param;

/**
 * @author llh
 */
public class BasePageParam {
    private Long pageNum;
    private Long pageSize;

    public Long getPageNum() {
        return pageNum;
    }

    public void setPageNum(Long pageNum) {
        this.pageNum = pageNum;
    }

    public Long getPageSize() {
        return pageSize;
    }

    public void setPageSize(Long pageSize) {
        this.pageSize = pageSize;
    }

    @Override
    public String toString() {
        return "BasePageParam{" +
                "pageNum=" + pageNum +
                ", pageSize=" + pageSize +
                '}';
    }
}
           

BasePageResult

分頁響應類

package com.llh.springbootpage.result;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import java.util.List;

/**
 * @author llh
 */
public class BasePageResult<T> {
    private List<T> data;
    private Long totalNum;

    public BasePageResult(List<T> data, Long totalNum) {
        this.data = data;
        this.totalNum = totalNum;
    }

    public static <E> BasePageResult<E> newInstance(IPage<E> page) {
        return new BasePageResult<E>(page.getRecords(), page.getTotal());
    }

    public List<T> getData() {
        return data;
    }

    public void setData(List<T> data) {
        this.data = data;
    }

    public Long getTotalNum() {
        return totalNum;
    }

    public void setTotalNum(Long totalNum) {
        this.totalNum = totalNum;
    }

    @Override
    public String toString() {
        return "BasePageResult{" +
                "data=" + data +
                ", totalNum=" + totalNum +
                '}';
    }
}
           

五、分頁模糊查詢

package com.llh.springbootpage.controller;


import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.llh.springbootpage.config.CommonResult;
import com.llh.springbootpage.entity.UserInfo;
import com.llh.springbootpage.param.UserInfoPageParam;
import com.llh.springbootpage.result.BasePageResult;
import com.llh.springbootpage.service.UserInfoService;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

/**
 * @author llh
 */
@RestController
@RequestMapping("/userInfo")
public class UserInfoController {
    @Resource
    private UserInfoService userInfoService;

    @PostMapping("/page")
    public CommonResult<BasePageResult<UserInfo>> page(@RequestBody UserInfoPageParam param) {
        IPage<UserInfo> pageParam = new Page<>(param.getPageNum(), param.getPageSize());
        IPage<UserInfo> pageResult = userInfoService.page(pageParam, new LambdaQueryWrapper<UserInfo>()
                .like(UserInfo::getUsername, param.getKeyword()));
        return CommonResult.success(BasePageResult.newInstance(pageResult));
    }
}
           
  • 根據keyword 模糊比對使用者名,

    LambdaQueryWrapper

    like

  • UserInfoPageParam

    繼承了

    BasePageParam

UserInfoPageParam

請求參數類

package com.llh.springbootpage.param;

/**
 * @author admin
 */
public class UserInfoPageParam extends BasePageParam {
    private String keyword;

    public String getKeyword() {
        return keyword;
    }

    public void setKeyword(String keyword) {
        this.keyword = keyword;
    }

    @Override
    public String toString() {
        return "UserInfoPageParam{" +
                "keyword='" + keyword + '\'' +
                "} " + super.toString();
    }
}

           

六、測試

SpringBoot Mybatis-Plus 分頁模糊查詢 分頁參數和響應封裝

七、結語

  • 代碼位址:https://github.com/tigerleeli/xiaohuge-blog/tree/master/spring-boot-page
  • Mybatis-Plus的基本使用請閱讀我之前的文章

同步微信公衆号:小虎哥的技術部落格

SpringBoot Mybatis-Plus 分頁模糊查詢 分頁參數和響應封裝

繼續閱讀