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

MyBatisPlus之分页查询及Service接口运用

一、分页查询

1.1 基本分页查询

配置分页查询拦截器

package com.fox.mp.config;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 PageConfig {/*** 3.4.0之前的版本* @return*//* @Beanpublic PaginationInterceptor paginationInterceptor(){return  new PaginationInterceptor();}*//*** 3.4.0之后版本* @return*/@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor(){MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());return mybatisPlusInterceptor;}
}

进行分页查询

分析:其实我们一般不会利用到selectPage的返回值,这时因为其返回值其实还是我们传递page对象本身,因此我们一般不对其返回值进行利用。 

最终版本:

    @Testpublic void testPage(){IPage<User> page = new Page<>();//设置每页条数page.setSize(2);//设置查询第几页page.setCurrent(1);userMapper.selectPage(page, null);System.out.println(page.getRecords());//获取当前页的数据System.out.println(page.getTotal());//获取总记录数System.out.println(page.getCurrent());//当前页码}

 1.2 多表分页查询

①定义接口,定义方法 方法第一个测试定义成Page类型:

package com.fox.mp.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fox.mp.domain.Orders;
import org.springframework.core.annotation.Order;public interface OrderMapper extends BaseMapper<Order> {IPage<Orders> findAllOrders(Page<Orders> page);
}

在xml文件中无需关注分页具体操作,MP中我们刚刚配置的拦截器会帮我们实现:

<?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.fox.mp.mapper.OrderMapper"><select id="findAllOrders" resultType="com.fox.mp.domain.Orders">SELECTo.*,u.`user_name`FROMTB_USER u,orders oWHEREo.`user_id` = u.`id`</select>
</mapper>

 方法测试调用如下:

    @Autowiredprivate OrderMapper orderMapper;@Testpublic void testPage02(){Page<Orders> page = new Page<>();//设置每页大小page.setSize(2);//设置当前页码page.setCurrent(2);orderMapper.findAllOrders(page);System.out.println(page.getRecords());System.out.println(page.getTotal());}

二、Service 层接口

MP也为我们提供了Service层的实现。我们只需要编写一个接口,继承 IService,并创建一个接口实现类继承ServiceImpl,即可使用。

相比于Mapper接口,Service层主要是支持了更多批量操作的方法。

2.1 基本使用

改造前

 定义接口

public interface UserService {List<User> list();
}

 定义实现类:

@Servicepublic class UserServiceImpl implements UserService {@Autowiredprivate UserMapper userMapper;@Overridepublic List<User> list() {return userMapper.selectList(null);}}

改造后

接口

public interface UserService extends IService<User> {}

实现类

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper,User> implements UserService {}

测试:

    @Autowiredprivate UserService userService;@Testpublic void testService() {List<User> list = userService.list();System.out.println(list);}

代码展示: 

2.2 自定义方法

 代码如下:

接口:

package com.fox.mp.service;import com.baomidou.mybatisplus.extension.service.IService;
import com.fox.mp.domain.User;public interface UserService extends IService<User> {User test();
}

自定义实现类: 

package com.fox.mp.service.impl;import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fox.mp.domain.Orders;
import com.fox.mp.domain.User;
import com.fox.mp.mapper.OrderMapper;
import com.fox.mp.mapper.UserMapper;
import com.fox.mp.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;@Service
public class UserServiceImpl extends ServiceImpl<UserMapper,User> implements UserService {@Autowiredprivate OrderMapper orderMapper;@Overridepublic User test() {UserMapper userMapper = getBaseMapper();List<Orders> orders = orderMapper.selectList(null);User user = userMapper.selectById(1);//查询用户对应的订单LambdaQueryWrapper<Orders> queryWrapper = new LambdaQueryWrapper<>();queryWrapper.eq(Orders::getId,3);List<Orders> ordersList = orderMapper.selectList(queryWrapper);return user;}
}

分析:

相关文章:

MyBatisPlus之分页查询及Service接口运用

一、分页查询 1.1 基本分页查询 配置分页查询拦截器 package com.fox.mp.config;import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; import org.springfra…...

对象存储minio

参考Linux搭建免费开源对象存储 创建一个data目录 --address和--console-address是MinIO服务器启动命令中的两个参数&#xff0c;它们具有以下区别&#xff1a; --address参数&#xff1a;用于指定MinIO服务器监听的S3 API访问地址。S3 API是用于与MinIO进行对象存储操作的…...

大模型学习笔记二:prompt工程

文章目录 一、经典AI女友Prompt二、prompt怎么做&#xff1f;1&#xff09;注重格式&#xff1a;2&#xff09;prompt经典构成3&#xff09;简单prompt的python询问代码4&#xff09;python实现订阅手机流量套餐的NLU5&#xff09;优化一&#xff1a;加入垂直领域推荐6&#xf…...

MATLAB实现LSTM时间序列预测

LSTM模型可以在一定程度上学习和预测非平稳的时间序列&#xff0c;其具有强大的记忆和非线性建模能力&#xff0c;可以捕捉到时间序列中的复杂模式和趋势[4]。在这种情况下&#xff0c;LSTM模型可能会自动学习到时间序列的非平稳性&#xff0c;并在预测中进行适当的调整。其作为…...

Kubernetes CNI Calico:Route Reflector 模式(RR) calico IPIP切换RR网络模式

1. 概述 Calico 路由反射模式是一种 BGP 互联方案,用于解决大规模网络中路由信息的分发和同步问题。在 Calico 的路由反射模式中,路由反射器(Route Reflectors)被用来集中管理路由信息,以减少网络中的路由信息数量和减小路由信息的分发规模。 在 Calico 的路由反射模式中…...

探索Gin框架:Golang Gin框架请求参数的获取

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站https://www.captainbed.cn/kitie。 前言 我们在专栏的前面几篇文章内讲解了Gin框架的路由配置&#xff0c;服务启动等内容。 专栏地址&…...

极值图论基础

目录 一&#xff0c;普通子图禁图 二&#xff0c;Turan问题 三&#xff0c;Turan定理、Turan图 1&#xff0c;Turan定理 2&#xff0c;Turan图 四&#xff0c;以完全二部图为禁图的Turan问题 1&#xff0c;最大边数的上界 2&#xff0c;最大边数的下界 五&#xff0c;…...

word导出链接

java 使用 POI 操作 XWPFDocumen 创建和读取 Office Word 文档基础篇 https://www.cnblogs.com/mh-study/p/9747945.html word标签解析文档 http://www.datypic.com/sc/ooxml/e-w_tbl-1.html...

(delphi11最新学习资料) Object Pascal 学习笔记---第4章第2.5节(重载和模糊调用)

4.2.5 重载和模糊调用 ​ 当调用一个重载的函数时&#xff0c;编译器通常会找到匹配的版本并正确工作&#xff0c;或者如果没有任何重载版本具有正确匹配的参数&#xff08;正如我们刚刚看到的&#xff09;&#xff0c;则会报出错误。 ​ 但还有第三种情况&#xff1a;假设编…...

ElementUI Data:Table 表格

ElementUI安装与使用指南 Table 表格 点击下载learnelementuispringboot项目源码 效果图 el-table.vue&#xff08;Table表格&#xff09;页面效果图 项目里el-table.vue代码 <script> export default {name: el_table,data() {return {tableData: …...

11.2 OpenGL可编程顶点处理:细分着色器

细分 Tessellation Tessellation&#xff08;细分&#xff09;是计算机图形学中的一种技术&#xff0c;用于在渲染过程中提高模型表面的几何细节。它通过在原始图元&#xff08;如三角形、四边形或补丁&#xff09;之间插入新的顶点和边&#xff0c;对图元进行细化分割&#x…...

微软正在偷走你的浏览记录,Edge浏览器偷疯了

虽然现在 Edge 浏览器相当强大&#xff0c;甚至在某种程度上更符合中国用户的使用体验&#xff1b;但最近新的Edge浏览器推出后一直在使用的用户应该有感受到&#xff0c;原本的冰清玉洁的转校生慢慢小鸡脚藏不住了&#xff0c;广告越来越多&#xff0c;越来越流氓了。 电脑之前…...

什么是数据库软删除,什么场景下要用软删除?(go GORM硬删除)

文章目录 什么是数据库软删除&#xff0c;什么场景下要用软删除&#xff1f;go GORM硬删除什么是数据库软删除什么场景下要用软删除 什么是数据库软删除&#xff0c;什么场景下要用软删除&#xff1f; go GORM硬删除 使用的是 GORM&#xff0c;默认启用了软删除功能&#xff…...

计算机设计大赛 深度学习+python+opencv实现动物识别 - 图像识别

文章目录 0 前言1 课题背景2 实现效果3 卷积神经网络3.1卷积层3.2 池化层3.3 激活函数&#xff1a;3.4 全连接层3.5 使用tensorflow中keras模块实现卷积神经网络 4 inception_v3网络5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; *…...

我主编的电子技术实验手册(02)——仪表与电源

本专栏是笔者主编教材&#xff08;图0所示&#xff09;的电子版&#xff0c;依托简易的元器件和仪表安排了30多个实验&#xff0c;主要面向经费不太充足的中高职院校。每个实验都安排了必不可少的【预习知识】&#xff0c;精心设计的【实验步骤】&#xff0c;全面丰富的【思考习…...

C语言----内存函数

内存函数主要用于动态分配和管理内存&#xff0c;它直接从指针的方位上进行操作&#xff0c;可以实现字节单位的操作。 其包含的头文件都是&#xff1a;string.h memcpy copy block of memory的缩写----拷贝内存块 格式&#xff1a; void *memcpy(void *dest, const void …...

【力扣】快乐数,哈希集合 + 快慢指针 + 数学

快乐数原题地址 方法一&#xff1a;哈希集合 定义函数 getNext(n) &#xff0c;返回 n 的所有位的平方和。一直执行 ngetNext(n) &#xff0c;最终只有 2 种可能&#xff1a; n 停留在 1 。无限循环且不为 1 。 证明&#xff1a;情况 1 是存在的&#xff0c;如力扣的示例一…...

c实现顺序表

目录 c语言实现顺序表 完整代码实现 c语言实现顺序表 顺序表的结构定义&#xff1a; typedef struct vector {int size; // 顺序表的容量int count; // 顺序表现在存储了多少个数据int *data; // 指针指向连续的整型存储空间 } vector;顺序表的结构操作&#xff1a; 1、初始…...

微软为新闻编辑行业推出 AI 辅助项目,记者参加免费课程

2 月 6 日消息&#xff0c;微软当地时间 5 日发布新闻稿宣布与多家新闻机构展开多项基于生成式 AI 的合作。微软表示&#xff0c;其使命是确保新闻编辑室在今年和未来拥有创新。 目前建议企业通过微软官方合作伙伴获取服务&#xff0c;可以合规、稳定地提供企业用户使用ChatGP…...

openssl3.2 - exp - buffer to BIO

文章目录 openssl3.2 - exp - buffer to BIO概述笔记END openssl3.2 - exp - buffer to BIO 概述 openssl的资料看的差不多了, 准备将工程中用到的知识点整理一下. openssl中很多API是以操作文件作为输入的, 也有很多API是以BIO作为输入的. 不管文件是不是受保护的, 如果有可…...

别再乱改Rime配置了!先搞懂用户文件夹和程序文件夹的区别(Windows/Ubuntu路径详解)

Rime配置进阶指南&#xff1a;用户文件夹与程序文件夹的深度解析 1. 理解Rime配置的核心架构 Rime输入法以其高度可定制性著称&#xff0c;但这也意味着用户需要对其配置结构有清晰认知。许多初学者在修改配置时常常陷入困惑&#xff1a;为什么我的修改没有生效&#xff1f;为什…...

MMAUD:面向现代微型无人机威胁的全面多模态反无人机数据集

摘要 https://arxiv.org/pdf/2402.03706 针对小型无人机&#xff08;UAV&#xff09;不断演变的挑战&#xff08;其具备运输有害载荷或独立造成破坏的潜力&#xff09;&#xff0c;我们推出了 MMAUD&#xff1a;一个全面的多模态反无人机数据集。MMAUD 通过专注于无人机检测、无…...

别再让一条宽带拖慢整个公司!手把手教你用H3C防火墙配置双WAN口负载均衡(附HCL模拟器配置)

中小企业网络优化实战&#xff1a;H3C防火墙双WAN负载均衡配置指南 当视频会议频繁卡顿、文件传输速度像蜗牛爬行时&#xff0c;单条宽带已成为制约企业效率的瓶颈。对于50-200人规模的中小企业&#xff0c;双WAN负载均衡技术能以极低成本实现带宽翻倍&#xff0c;本文将用一台…...

别再死记公式了!用HFSS和Matlab FDTD两种方法,手把手教你仿真微带线阻抗(附工程文件)

微带线阻抗仿真实战&#xff1a;HFSS与Matlab FDTD双路径深度解析 微带线作为高频电路设计中最常见的传输线结构之一&#xff0c;其特性阻抗的准确计算直接关系到信号完整性和系统性能。许多工程师在学习初期都会遇到一个共同困惑&#xff1a;为什么教科书公式计算结果与仿真或…...

Perplexity股票数据清洗SOP(含NASDAQ非标字段映射表):金融工程师内部使用的12项校验规则

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;Perplexity股票信息检索 Perplexity AI 公司尚未上市&#xff0c;因此不存在公开交易的股票代码、实时行情或交易所挂牌信息。这一事实常被开发者和投资者误读&#xff0c;尤其在使用金融数据 API 时容易触发…...

效率翻倍!深度挖掘CANoe那些被忽略的宝藏功能:Layout同步、Favorites收藏与Write窗口妙用

效率翻倍&#xff01;深度挖掘CANoe那些被忽略的宝藏功能&#xff1a;Layout同步、Favorites收藏与Write窗口妙用 在汽车电子测试领域&#xff0c;CANoe作为行业标杆工具&#xff0c;其核心功能如总线仿真、诊断测试等早已被工程师们熟练掌握。但鲜为人知的是&#xff0c;那些隐…...

题解:洛谷 U327333 Max Sum Plus Plus 2

本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来&#xff0c;并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构&#xff0c;旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。 欢迎大…...

备战蓝桥杯国赛【Day 17】

&#x1f4cc; 写在前面&#xff1a;今天的4道题全部来自蓝桥杯真题&#xff0c;&#xff0c;核心考点包括&#xff1a;贪心策略排序、自定义比较器、差分思想、前缀和贪心选择。这些题目看似简单&#xff0c;但暗藏陷阱&#xff0c;是检验"代码实现能力"和"思维…...

【最新v2.7.5 版本安装包】保姆级一步到位,OpenClaw 零基础无需命令一键部署即能用

&#x1f680; OpenClaw 一键安装包&#xff5c;一键部署甩掉复杂环境配置 【点击下方链接下载最新安装包】 https://xiake.yun/api/download/package/16?promoCodeIVBE1F235167 &#x1f4cc; 适配信息 适配系统&#xff1a;Windows10/11 64 位 当前版本&#xff1a;…...

10分钟掌握Dism++:Windows系统优化终极完整指南

10分钟掌握Dism&#xff1a;Windows系统优化终极完整指南 【免费下载链接】Dism-Multi-language Dism Multi-language Support & BUG Report 项目地址: https://gitcode.com/gh_mirrors/di/Dism-Multi-language 还在为Windows系统越来越慢而烦恼吗&#xff1f;磁盘空…...