当前位置: 首页 > java >正文

基于mybatis与PageHelper插件实现条件分页查询(3.19)

实现商品分页例子

        需要先引入mybatis与pagehelper插件,在pom.xml里

<!-- Mybatis -->
<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>3.0.3</version>
</dependency><!--分页插件PageHelper-->
<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.4.7</version>
</dependency>

        利用三层架构分别实现对应代码。

Controller层

@Slf4j
@RestController
@RequestMapping("/products")
public class ProductController {@Autowiredprivate ProductService productService;/*** 分页条件查询商品*/@GetMappingpublic Result page(ProductQueryParam queryParam) {log.info("条件分页查询, {}", queryParam);PageBean pageBean = productService.page(queryParam);return Result.success(pageBean);}
}

Service层

public interface ProductService {PageBean page(ProductQueryParam queryParam);
}

ServiceImpl层

@Slf4j
@Service
public class ProductServiceImpl implements ProductService {@Autowiredprivate ProductMapper productMapper;//条件分页查询商品数量@Overridepublic PageBean page(ProductQueryParam queryParam) {PageHelper.startPage(queryParam.getPage(), queryParam.getPageSize());Page<Product> productList = productMapper.page(queryParam);return new PageBean(productList.getTotal(), productList.getResult());}
}

Mapper层

@Slf4j
@Service
public class ProductServiceImpl implements ProductService {//条件分页查询商品数量@Overridepublic PageBean page(ProductQueryParam queryParam) {PageHelper.startPage(queryParam.getPage(), queryParam.getPageSize());Page<Product> productList = productMapper.page(queryParam);return new PageBean(productList.getTotal(), productList.getResult());}
}

Mapper.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.itheima.mapper.ProductMapper"><!--条件分页查询--><select id="page" resultType="com.itheima.pojo.Product">select p.*, b.name as brandName from tb_product p left join tb_brand b on p.brand_id = b.id<where><if test="name != null and name != ''">name like concat('%', #{name} ,'%')</if><if test="brandId != null">and brand_id = #{brandId}</if><if test="publishStatus != null">and publish_status = #{publishStatus}</if><if test="verifyStatus != null">and verify_status = #{verifyStatus}</if></where>order by create_time desc</select></mapper>

http://www.xdnf.cn/news/1054.html

相关文章:

  • Linux学习笔记|入门指令
  • 维度建模工具箱 提纲与总结
  • #Paper Reading# DeepSeek-V3
  • docker部署seata
  • Nebula图数据库
  • STM32H5开发陀螺仪LSM6DSV16X(1)----轮询获取陀螺仪数据
  • 【leetcode题解】滑动窗口
  • 【瑞萨RA4L1-SENSOR套件测评】LCD 显示
  • 2025年pta团队设计天梯赛题解
  • FreeRTOS互斥信号量解决优先级翻转实战教程
  • docker 中将dpo后的模型转为ollama能够调用的gguf格式
  • 通过Docker Desktop配置OpenGauss数据库的方法(详细版+图文结合)
  • 助conda命令把环境导出为一个文件,然后在 Linux 系统里利用该文件重新创建相同的环境
  • mapbox进阶,实现掩膜效果,并控制掩膜透明度
  • 数组的应用
  • Linux[基本指令]
  • Ubuntu20.04安装Pangolin遇到的几种报错的解决方案
  • 【项目中的流程管理(九)】
  • 关于 LangChain Execution Language (LCEL) 的详细解释,涵盖其核心概念、语法、应用场景及示例
  • C++ GPU并行计算开发实战:利用CUDA/OpenCL加速粒子系统与流体模拟
  • 探究CF1009(div3)C题——XOR and Triangle
  • 宝塔面板引发的血案:onlyoffice协作空间无法正常安装的案例分享
  • 深入了解 WebGIS 系统:构建地理空间信息的网络桥梁
  • C语言高频面试题——strcpy与memcpy区别
  • mcp server、client和本地大模型集成调用
  • Argo CD
  • C语言高频面试题——常量指针与指针常量区别
  • 智慧能源安全新纪元:当能源监测遇上视频联网的无限可能
  • 消息队列知识点详解
  • 做虚拟化应该怎么选择美国服务器?