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

25.条件构造器 分页插件

课次25:条件构造器 & 分页插件

一、教学目标

  • 使用LambdaQueryWrapper构建查询条件。
  • 配置MyBatis-Plus分页插件,实现新闻分页查询。

二、核心知识点(简要)

  • LambdaQueryWrapper:类型安全的查询条件构造器。
  • 分页插件:自动拦截SQL添加LIMIT,并查询总记录数。
  • Page:分页参数对象。

三、操作步骤

  1. 创建分页配置类

    • 右键com.weitoutiao,创建config.MyBatisPlusConfig

      ![image-20260614190220942](课次25:条件构造器 & 分页插件.assets/image-20260614190220942.png)

      ![image-20260614190654638](课次25:条件构造器 & 分页插件.assets/image-20260614190654638.png)

    • 类中代码如下:

      package com.weitoutiao.config;import com.baomidou.mybatisplus.annotation.DbType;
      import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
      import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
      import org.springframework.context.annotation.Bean;
      import org.springframework.context.annotation.Configuration;@Configuration
      public class MyBatisPlusConfig {@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();// 创建分页插件并指定数据库类型(根据实际使用的数据库选择)PaginationInnerInterceptor paginationInterceptor = new PaginationInnerInterceptor(DbType.MYSQL);// 可选:超出最大页码时是否处理(false表示返回空数据,true表示返回最后一页)paginationInterceptor.setOverflow(false);// 将分页插件添加到拦截器容器[reference:0]interceptor.addInnerInterceptor(paginationInterceptor);return interceptor;}
      }
      
  2. 创建Service(使用MyBatis-Plus的IService)

    • 右键com.weitoutiao,创建service.NewsService

      ![image-20260614194139465](课次25:条件构造器 & 分页插件.assets/image-20260614194139465.png)

    • NewsService中的代码如下:

      package com.weitoutiao.service;import com.baomidou.mybatisplus.extension.service.IService;
      import com.weitoutiao.entity.News;public interface NewsService extends IService<News> {
      }
      
    • 右键service,创建impl.NewsServiceImpl的实现类

      ![image-20260614194524770](课次25:条件构造器 & 分页插件.assets/image-20260614194524770.png)

      ![image-20260614194543234](课次25:条件构造器 & 分页插件.assets/image-20260614194543234.png)

    • NewsServiceImpl中的代码如下:

      package com.weitoutiao.service.impl;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
      import com.weitoutiao.entity.News;
      import com.weitoutiao.mapper.NewsMapper;
      import com.weitoutiao.service.NewsService;
      import org.springframework.stereotype.Service;@Service
      public class NewsServiceImpl extends ServiceImpl<NewsMapper, News> implements NewsService {
      }
      
  3. 测试分页

    • 打开test文件夹中的testSelect文件,在代码最后添加如下测试代码:

      @SpringBootTest
      class NewsServiceTest {@Autowiredprivate NewsService newsService;@Testvoid testPage() {Page<News> page = new Page<>(1, 5);LambdaQueryWrapper<News> wrapper = new LambdaQueryWrapper<>();wrapper.orderByDesc(News::getPublishTime);Page<News> result = newsService.page(page, wrapper);System.out.println("总记录数:" + result.getTotal());System.out.println("当前页数据:" + result.getRecords());}
      }
      
    • 红色错误的代码,可以鼠标悬停到错误位置上,选择导入类即可解决

      ![image-20260614195411202](课次25:条件构造器 & 分页插件.assets/image-20260614195411202.png)

    • 点击testPage旁边的运行按钮,进行测试

      ![image-20260614195531894](课次25:条件构造器 & 分页插件.assets/image-20260614195531894.png)

    • 会报如下错误:

    • 因为 MyBatis-Plus 开启了逻辑删除功能,但 news 表中没有 deleted 字段

      ![image-20260614200328179](课次25:条件构造器 & 分页插件.assets/image-20260614200328179.png)

  4. 所以需要打开SQLyog, 在查询中执行如下语句

    ALTER TABLE `news` ADD COLUMN `deleted` TINYINT DEFAULT 0 COMMENT '逻辑删除(0未删除,1已删除)';
    
    • SQLyog中,先选中该条语句,再点击执行

      ![image-20260614200656882](课次25:条件构造器 & 分页插件.assets/image-20260614200656882.png)

    • 点刷新,表中就会多一列deleted

      ![image-20260614200802910](课次25:条件构造器 & 分页插件.assets/image-20260614200802910.png)

  5. 回到IDEA中,再执行testPage的测试,还会报如下错误

    ![image-20260614201116760](课次25:条件构造器 & 分页插件.assets/image-20260614201116760.png)

    • 需要在SQLyog中再执行如下语句:

      ALTER TABLE `news` 
      ADD COLUMN `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';
      
  6. 回到IDEA中,再执行testPage的测试,程序log已成功打印

    ![image-20260614201619524](课次25:条件构造器 & 分页插件.assets/image-20260614201619524.png)

http://www.rkmt.cn/news/1541821.html

相关文章:

  • 基于LCU API的英雄联盟客户端工具包架构设计与技术实现
  • 厦门专业中职学校排行:适配本地产业的5家实力院校 - 奔跑123
  • 2026年安徽普高落榜择校指南,适合低分孩子的学校推荐 - 小张zc
  • HPE SPP 2026.05.00.00 - HPE 服务器固件、驱动程序和系统软件包
  • Java毕设项目:基于 Spring Boot 的会议室使用登记与预约管理系统设计 高效办公配套会议室预约服务系统设计与实现(源码+文档,讲解、调试运行,定制等)
  • VirtualBox 7.2.10 (macOS, Linux, Windows) - 开源跨平台虚拟化软件
  • 基于NXP JN516x-EK003套件的ZigBee RF4CE无线遥控开发实战指南
  • 2026江苏不锈钢包边公司 实测本地 - LYL仔仔
  • 2026长沙高端系统门窗定制全攻略:断桥铝隔音隔热与极窄边框品牌深度横评 - 优质企业观察收录
  • 从Jupyter Notebook到生产环境的机器学习模型部署实战
  • Python时间序列对齐:互相关+亚像素插值实现高精度时延计算
  • 2026年6月温州道闸TOP8推荐 - 资讯报道
  • 国企央企校招青睐院校:东北大学资源与土木工程学院毕业生如何斩获中建中铁Offer? - 品牌2026
  • 交叉学科发力:东北大学资源与土木工程学院测绘与环境工程实力几何? - 品牌2026
  • 常州本地人带老货实测:一条绞丝镯走遍天宁钟楼新北武进金坛黄金回收店 - 昌福黄金回收
  • 2026年手提式打包机实力厂家推荐榜单:手持式、电动、PET塑钢带打包机源头工厂深度解析 - 品牌发掘
  • 如何在10分钟内用CodeCombat开始游戏化编程学习:完整入门指南
  • 大数据专业适合冲一冲还是稳一稳
  • Gemma 4本地部署实战:10分钟在普通笔记本跑通
  • 基于AI政策路径模型:“2026年美联储利率决议公布时间表”观察框架
  • 冷库选型指南:如何构建高效可靠的冷链存储系统 - 资讯报道
  • 武汉本地配镜测评,按需选择不花冤枉钱
  • 安卓Minecraft启动器终极指南:在手机上畅玩Java版MC的完整解决方案
  • 为什么需要iPaaS | 数字化转型、API经济与实时数据需求
  • 使用claude code迁移Jakarta EE项目--分析使用了JPA的项目
  • 凯撒旅业:三十载风雨兼程,见证中国出境游的崛起与蜕变 - 品牌2026
  • 对比实测10款降AI率网站:只选真正管用的那一款!
  • GPT-4o自动化人口数据可视化:从UN Excel到出版级图表
  • 会展帐篷空间方案:从临时搭建到专业装配的行业演进 - 资讯报道
  • PMSM负载估计、负载转矩估计、卡尔曼滤波龙伯格观测器(复现参考文献+说明文档)