当前位置: 首页 > 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.jsqmd.com/news/1029939/

相关文章:

  • 厦门专业中职学校排行:锚定产业适配与就业升学双保障 - 奔跑123
  • 2026济南化工原料销售公司 实测测评 - LYL仔仔
  • 音乐自由之路:3分钟掌握Unlock-Music,解锁你的数字音乐收藏
  • 厂区厕所定制怎么选?资深从业者解答核心问题 - 奔跑123
  • 厦门专业中职学校排行:适配本地产业的5家实力院校 - 奔跑123
  • 东北大学资源与土木工程学院升学有多强?学子遍布清北藤校 - 品牌2026
  • K-means聚类实战:从肘部法则失效到业务可解释的完整链路
  • ZigBee Power Profile集群API详解:构建智能能源管理系统的核心
  • 2026年 免扣打包机厂家推荐排行榜:高效耐用/智能节能型打包机源头工厂实力解析与选购指南 - 企业推荐官【官方】
  • 26.自动填充 逻辑删除
  • 2026年安徽普高落榜择校指南,适合低分孩子的学校推荐 - 小张zc
  • 基于LCU API的英雄联盟客户端工具包架构设计与技术实现
  • 2026年 缠绕机厂家推荐排行榜:托盘/在线/自动缠绕机及薄膜裹包机优质品牌深度解析与选购指南 - 企业推荐官【官方】
  • 揭秘PyWxDump 4.0:如何破解微信数据解析的四大技术壁垒
  • AI公司介绍:每个老板都应该准备一份AI能读懂的公司介绍 - 招财兔数字员工
  • Microsoft Office LTSC 2021 for Mac 16.110 发布 - 文档、电子表格、演示文稿和电子邮件
  • 跨平台APK资源编辑:开源工具的完整解决方案与技术架构解析
  • Java毕设项目:基于 Spring Boot 的会议室使用登记与预约管理系统设计 高效办公配套会议室预约服务系统设计与实现(源码+文档,讲解、调试运行,定制等)
  • Claude Code CLI无缝切换Gemini 2.5 Pro实战指南
  • HPE SPP 2026.05.00.00 - HPE 服务器固件、驱动程序和系统软件包
  • 近五成学子顺利深造!就业学生超半数入职国企!东北大学资源与土木工程学院解锁多元未来 - 品牌2026
  • 中年转行数据科学家:用行业经验撬动真实项目
  • 喜马拉雅音频下载终极指南:3步轻松保存付费内容到本地
  • VirtualBox 7.2.10 (macOS, Linux, Windows) - 开源跨平台虚拟化软件
  • 国产大模型合规落地指南:从RAG优化到政务AI审计要点
  • 基于NXP JN516x-EK003套件的ZigBee RF4CE无线遥控开发实战指南
  • 寄重货怎么便宜?试试这招省一半运费 - 快递物流资讯
  • 国产大模型平替Gemini:免登录合同审查实战指南
  • 2026江苏阳光房安装公司 TOP5实测 - LYL仔仔
  • 院士团队领衔!探秘东北大学资源与土木工程学院硬核师资与科研平台 - 品牌2026