MyBatisPlus实现自定义分页查询数据结合QueryWrapper实现自定义的多表连接查询

基于Mybatis Plus实现多表分页查询 注意:Mybatis Plus 3.0.7 版本才开始用【自定义sql】+【QueryWrapper】,低版本不能使用,还是老实写SQL进行条件拼接 2.0、源码分析 在Wrapper<T>接口中就有如下方法 /** * 获取自定义SQL 简化自定义XML复杂情况 * <p>使用方法</p> * <p>`自定义sql` + ${ew.c... 阅读详情

在MyBatisPlus中,虽然框架自带的BaseMapper具有各种CRUD操作,但有时需要进行自定义的查询,如多表的连接查询:

首先准备实体类:

@Data
public class Dish implements Serializable {

    private static final long serialVersionUID = 1L;

    private Long id;


    //菜品名称
    private String name;


    //菜品分类id
    private Long categoryId;


    //菜品价格
    private BigDecimal price;


    //商品码
    private String code;


    //图片
    private String image;


    //描述信息
    private String description;


    //0 停售 1 起售
    private Integer status;


    //顺序
    private Integer sort;


    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;


    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;


    @TableField(fill = FieldFill.INSERT)
    private Long createUser;


    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Long updateUser;


    //是否删除
    private Integer isDeleted;

}
@Data
public class DishFlavor implements Serializable {

    private static final long serialVersionUID = 1L;

    private Long id;


    //菜品id
    private Long dishId;


    //口味名称
    private String name;


    //口味数据list
    private String value;


    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;


    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;


    @TableField(fill = FieldFill.INSERT)
    private Long createUser;


    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Long updateUser;


    //是否删除
    private Integer isDeleted;

}
@Data
public class DishDto extends Dish {

    private List<DishFlavor> flavors = new ArrayList<>();

    private String categoryName;

    private Integer copies;
}

编写Mapper接口及其对应的xml文件:

@Mapper
public interface DishMapper extends BaseMapper<Dish> {
    Page<DishDto> DishDtoPage(@Param("page") Page<DishDto> page,
                              @Param("name") String name,
                              // @Param("ew") 表示取mapper.xml中的${ew.customSqlSegment}
                              @Param("ew") QueryWrapper<DishDto> queryWrapper);
}

其中,@Param("ew") QueryWrapper<DishDto> queryWrapper就是结合QueryWrapper,除了可以自定义sql语句之外,还可用QueryWrapper来快捷添加限制条件!

<?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.reggie_takeout.mapper.DishMapper">
    <select id="DishDtoPage" resultType="com.itheima.reggie_takeout.dto.DishDto">
        select d.*,c.name as categoryName
        from dish d left outer join category c
        on d.category_id = c.id
        <where>
            <if test="name != null and name != ''">
                d.name like #{name}
            </if>
        </where>
        /*
            ${ew.customSqlSegment} 将此行代码放置于Mapper文件的语句中,
            MybatisPlus将会为我们自动将 @Param(Constants.WRAPPER) 注解后的查询参数自动组装到Sql中
        */
        ${ew.customSqlSegment}
    </select>
</mapper>

Service层:

public interface DishService extends IService<Dish> {
    public Page<DishDto> pageDishDto(Page<DishDto> pageInfo, String name, QueryWrapper<DishDto> queryWrapper);
}

ServiceImpl:

/**
     * 调用DishMapper中的自定义方法需要将DishMapper注册到容器中
     * 使用@Resource注解注册
     */
    @Resource
    private DishMapper dishMapper;

    @Override
    public Page<DishDto> pageDishDto(Page<DishDto> pageInfo, String name, QueryWrapper<DishDto> queryWrapper) {
        Page<DishDto> dishDtoPage = dishMapper.DishDtoPage(pageInfo, name,queryWrapper);
        return dishDtoPage;
    }

注意由于需要使用mapper接口中自定义的方法,所以ServiceImpl中需要注入对应的Mapper,使用@Resource注解注入!

Controller层:

@RestController
@RequestMapping("/test")
public class testController {
    @Autowired
    DishService dishService;

    @GetMapping("/page")
    public Page<DishDto> pageDishDto() {
        QueryWrapper<DishDto> queryWrapper = new QueryWrapper<>();
        queryWrapper.orderByDesc("update_time");
        Page<DishDto> page = new Page<>();
        Page<DishDto> dishDtoPage = dishService.pageDishDto(page, null, queryWrapper);
        return dishDtoPage;
    }
}

测试效果:
在这里插入图片描述
查询成功!

Qwen3.5本地部署实战:4B模型在RTX3060上离线运行指南 大语言模型本地化部署正从云端服务转向终端设备,其核心是模型轻量化、硬件适配与推理引擎协同优化。基于INT4量化感知训练和GGUF格式支持,Qwen3.5在结构精简、Tokenizer轻量及显存友好性方面显著优于前代,使4B级别模型可在RTX 3060等中端显卡上稳定运行。该技术路径兼顾低延迟响应(<2秒)、数据隐私保障与离线可用性,广泛适用于法律文书分析、医疗文档处理、教育AI助手等对安全性与实时性双重要求的场景。本文聚焦Qwen3.5-4B量化部署全流程,涵盖llama.cpp编译调优、GPU层加载策略及 阅读详情

相关推荐

学习笔记9--智能驾驶的功能安全设计之功能安全设计

本系列博客包括6个专栏,分别为:《自动驾驶技术概览》、《自动驾驶汽车平台技术基础》、《自动驾驶汽车定位技术》、《自动驾驶汽车环境感知》、《自动驾驶汽车决策与控制》、《自动驾驶系统设计及应用》。此专栏是关于《自动驾驶系统设计及应用》书籍的笔记.

FUXI_Willard 1794

MyBatis Plus之QueryWrapper分页查询示例

一、使用QueryWrapper分页查询 TTemplateData 为实体 condition为前端所传所有查询条件实体 keys 为前端搜索框条件 QueryWrapper<TTemplateData> templateWrapper = new QueryWrapper<>(); String keys = condition.getSearchCondition(); templateWrapper.eq("status", 0);

weixin_41318009的博客 1万+

Shopee滑块验证码太刁钻?手把手教你用Python+Playwright绕过弧形验证(附影刀RPA接入代码)

本文详细介绍了如何使用Python和Playwright结合SadCaptcha第三方服务高效破解Shopee平台的弧形滑块验证码,并集成到影刀RPA工作流中。该方案开发周期短、准确率高(>90%),特别适合跨境电商自动化操作,已在实际项目中验证成功。

weixin_29284657的博客 565

QueryWrapper构建复杂的SQL-循环添加条件、联表查询

在上面的代码中,我们首先创建了一个QueryWrapper对象,然后使用customizeReturnObject方法进行自定义返回对象。这个方法接受一个CustomizeReturnObject对象作为参数,这个对象实现了customize方法。在customize方法中,我们可以使用returnObjectModel对象来添加自定义的列和表达式。在本例中,我们添加了两个列,一个是用户姓名和姓氏的组合,另一个是用户的电子邮件地址。

木头大左的博客 1万+

2025.03.14【读书笔记】|GWAS分析神器:BOLT-LMM工具介绍与快速安装

在生物信息学领域,全基因组关联分析(GWAS)已成为揭示遗传与疾病关系的强有力工具。BOLT-LMM作为一款专为大规模样本量设计的GWAS分析工具,将极大地提高研究人员的工作效率。大家好,今天我们来聊聊一个非常强大的生物信息学工具——BOLT-LMM。它是基于线性混合模型(LMM)的全基因组关联分析(GWAS)分析工具,通过快速的方差近似方法在计算效率上实现了显著的提升。BOLT-LMM的高效性能使其成为大规模样本GWAS分析的理想选择,它将进一步推动生物信息学和遗传学研究的发展。

1093

从TCGA官网获取新版count数据并精准转换为TPM的实战指南

本文详细介绍了从TCGA官网获取新版count数据并精准转换为TPM的实战指南。通过TCGAbiolinks工具下载原始count数据,结合GENCODE v36注释文件计算基因有效长度,最终实现count到TPM的标准化转换,确保数据完整性和分析可靠性。文章包含完整代码示例和常见问题解决方案,特别适合生物信息学研究人员参考。

weixin_27310417的博客 282

Mybatis plus 分页集成及基本使用总结 注解连表查询分页案例 QueryWrapper,LambdaQueryWrapper,selectMap和selectObjs

Mybaits-plus 是mybits 的升级版,从mybaits 升级到mybaits-plus 可以实现平滑升级Mybaits-plus 本身提供了大量的基本查询方法以及强大的 Wrapper(包装) 类 用于查询的以及 更新的,使用Wrapper 基本已经可以构建大部分条件了。几乎可以实现很少代码,很多功能自动提供使得一般的查询几乎不需要写 XML 直接使用代码包装完成。同时支持各类注解帮助完成实体以及查询语句的构建。(在上面定义的实体类扫描路径包下创建)

weixin_44131922的博客 5278

LIN协议栈 AUTOSAR架构下 状态管理

LIN State Manager 通过对这些状态的管理和转换,实现了对 LIN 总线通信状态的精确控制,以满足汽车电子系统中不同场景的需求。

汽车电子从业者,电子爱好者。 2050

queryWrapper自定义查询sql

QueryWrapper 是 Mybatis-Plus 提供的一种方便的查询构造器,它可以通过链式调用的方式构建出复杂的 SQL 查询语句,而不需要手写 SQL。 如果需要自定义 SQL 查询语句,可以使用 QueryWrapper 的自定义查询方法。例如,可以使用 QueryWrapper 的 select(String... columns) 方法指定查询的字段,使用 where(String...

weixin_42611177的博客 2153

PXE 批量安装 Ubuntu 20.04

原文链接:https://www.cpweb.top/1698 一、介绍   Ubuntu 20.04 的服务器安装程序支持新的操作模式:自动安装(automated installation)。自动安装可以通过自动安装配置提前回答所有这些配置问题,并使安装过程无需任何交互即可运行。   在 Ubuntu 18.04 中,用的应答文件是 preseeds(预配置文件),它基于 debian-installer(aka di)来实现自动安装的。需要注意的是,如果你使用的是 cobbler,那你应....

supahero的博客 1万+

大模型微调部署实战及类GPT工具的高效使用

本文主要介绍了专栏《大模型微调部署实战及类GPT工具的高效使用》的核心内容,希望对使用大语言模型的同学们有所帮助。 文章目录 1. 前言 2. 专栏亮点 3. 你的收获 4. 详细目录

herosunly的博客 22万+

queryWrapper写内联接,多表查询

-根据预约id查询预约信息,包括体检人信息、套餐信息 隐式内联接-->

weixin_42759398的博客 2万+

YOLO26涨点改进| TGRS 2026 | 独家创新首发、注意力改进篇| 引入CSSCA频谱-空间交叉注意力,含多种创新改进,小目标检测、图像分割、高光谱图像分类、语义分割任务任务涨点

🔥本文提出CSSCA(频谱-空间交叉注意力)模块,通过中心像素引导的光谱与空间交叉注意力机制,有效提升YOLO26模型的特征表达能力。该模块实现了光谱与空间信息的协同优化,能够自适应强化关键通道与重要空间区域,增强模型对小目标和复杂场景的感知能力。文章详细介绍了CSSCA的网络结构、工作原理及四大优势,包括精准特征表达、协同信息优化、小样本适应性和轻量化设计。同时提供了完整的代码实现和四种改进方案的YAML配置文件,包括基础版、增强版、C3k2融合版和C2PSA融合版,为YOLO26模型的性能提升

Ai缝合怪、助力小伙伴高效发论文 264

MybatisPlus多表查询及分页查询 2024/8/18 19:10

具体来说,内连接会根据连接条件(通常是两个表之间的共同字段)将两个表中符合条件的行进行匹配,并将匹配的结果作为输出。例如,如果在第一段代码中,假设每页显示 10 条数据,当前是第 2 页,那么它会返回年龄为 18 岁的用户数据,并且按照每页 10 条,第 2 页的规则进行分页。例如,如果在查询用户数据时使用了这些条件,那么最终得到的结果将是年龄为 18 岁、用户名包含 “Jack” ,并且按照用户。内连接是SQL中最常用的连接类型之一,用于从多个表中检索相关数据,是数据查询和分析中非常重要的操作。

2301_80011650的博客 4156

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

MyBatisPlus——多表查询——多条件查询——分页查询

这四个注解由MyBatis提供,MyBatis-Plus只是对。Mapper之间的调用,需要找到表与表之间的映射关系,的操作进行了增强,对于多表的查询并没有做任何的修改。实现复杂关系映射,可以使用。组合完成复杂关系的配置。

qq_45896330的博客 6327

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

MybatisPlus联合查询

目录1、什么是Mybatis-plus-join?2、下载Mybatis-plus-join3、离线版请使用Maven将其打包成jar包3.1、使用idea打包4.项目中引用Mybatis-plus-join的pom.xml配置5、在业务中使用mybatis-plus-join的准备使用核心类 MPJLambdaWrapper和MPJQueryWrapperMPJLambdaWrapper用法MPJLambdaWrapper示例简单的3表查询分页查询MPJQueryWrapper简单的3表查询分页查询还可以

赵广陆 3万+

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

MybatisPlus多表连接查询

一、序言 (一)背景内容 软件应用技术架构中DAO层最常见的选型组件为MyBatis,熟悉MyBatis的朋友都清楚,曾几何时MyBatis是多么的风光,使用XML文件解决了复杂的数据库访问的难题。时至今日,曾经的屠龙者终成恶龙,以XML文件为基础的数据库访问技术变得臃肿、复杂,维护难度直线上升。 MybatisPlus对常见的数据库访问进行了封装,访问数据库大大减少了XML文件的依赖,开发者从臃肿的XML文件中获得了较大限度的解脱。 MybatisPlus官方并没有提供多表 连接查询 的通用解决方

wdj_yyds的博客 1万+

MyBatisPlus概述以及MyBatisPlus如何使用以及MyBatisPlus中的QueryWrapper条件查询和分页查询

文章目录MyBatisPlus概述以及MyBatisPlus如何使用以及MyBatisPlus中的QueryWrapper条件查询和分页查询MyBatisPlus的概述MyBatis-Plus特性MyBatisPlus的使用步骤1.创建数据库mybatis_plus2.创建user表3.编写项目,初始化项目!使用SpringBoot初始化!4.导入依赖在配置文件中配置数据源DataSource5.写动态代理接口6.BaseMapper接口中的方法7.扫描动态代理接口条件构造器QueryWrapper用于设置

xzy的博客 4917

1天搞定SpringBoot+Vue全栈开发-MybatisPlus多表查询及分页查询

本文介绍了MybatisPlus实现多表查询的方法。主要内容包括:MybatisPlus多表查询的四个核心注解(@TableField、@Result、@Results、@Many)及其适用场景;用户表和订单表的数据库设计;通过订单类与Mapper实现一对一关联查询的代码示例;以及条件查询和分页查询的实现方式。文章提供了完整的代码实现和测试结果截图,帮助开发者理解如何在MybatisPlus框架下进行多表关联查询操作。

m0_65552477的博客 969

MybatisPlus分页查询【如何使用自定义sql语句】

前言 MybatisPlus结合了Mybatis和JPA的精华,让我们操作数据库非常的方便。具体的使用方式参考官网。 在使用MybatisPlus时,对于分页传搜索条件这块甚是苦恼。因为分页方法MybatisPlus提供了两个。如下: /** * 根据 entity 条件,查询全部记录(并翻页) * * @param page 分页查询...

安迪爸爸 1万+

基于QueryWrapper,实现MybatisPlus多表关联查询

版权声明:请勿用于任何商业用途的文章转载,转载请说明出处! 1.dao层接口使用Select注解写SQL: 重点:@Param(“ew”) Wrapper参数是必须,因为${ew.customSqlSegment} 底层其实就是where 条件,所以为了保证Wrapper不为空,service层代码中的Wrapper至少需要有一个条件:1 = 1 @Override @Select("select a.code as code , b.name as name , b.barcode as barc

m0_67391870的博客 5668

MybatisPlus实现联表分页查询

MybatisPlus实现联表分页查询 在开发中遇到了一个问题,需要进行联表查询并进行分页,因为不想自己来写分页,所以还是依靠MybatisPlus来实现想要的功能。 首先我们有一个需求,是想根据产品表sys_product中的factory_id来获取工厂表sys_factory中的工厂信息,而且要实现分页查询。 产品表 sys_product [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jkdBBfY4-1623079336083)(C:\Users\hp\AppD

Life And Code 7065

mybatisplus多条件分页查询(EntityWrapper与QueryWrapper)

这个层我是用了条件构造器QueryWrapper来实现多条件查询,注意这是因为我的mybatisplus的版本是3.2版本,只有3.x的版本才有QueryWrapper,而如果是2.x版本,是没有QueryWrapper的,如果找不到QueryWrapper,可以在配置里将mybatisplus的版本改为3.x,或者使用EntityWrapper都行,两者的功能其实差不多。

c921179750的博客 8448

SpringBoot整合mybatis-plus实现分页查询(建议收藏)

最近学习了SpringBoot分页查询的两种写法,一种是手动实现,另一种是使用框架实现。现在我将具体的实现流程分享一下。

不愧是暮言的博客 1万+

Springboot学习六:MybatisPlus的多表查询以及分页查询

然后通过plus的内置查询语句将page对象数据读取,还可以添加queryWrapper条件查询,将返回的结果集给IPage类对象ipage,mybatis会自动整理结果包括总页数,总条数,当前条数据。中添加orders字段,加上对应getter,setter,toString方法,后续用于通过User来查询Order表(此处由于orders字段并不在User表中存在,所以利用TableField注解标识此字段不存在,来告诉mybatisplus的查询语句避开此字段,否则汇报错。先在配置类添加配置文件。

2301_81192408的博客 454

实例:MyBatis-Plus自定义联表分页查询

上一篇文章简单示范自定义分页查询,可通过QueryWrapper自由添加条件查询。也可以在xml中自定义sql语句。 复杂的自定义连表分页查询,就不是那么随意了。 ProductServiceImpl.java @Override public IPage<Product> querySpu(ProductQueryItems items) { int page = items.getPage() == null ? 1 : items.getPage(); .

ymzhao 6275
上一篇: windows软件图标变成白色解决方法
下一篇: idea中使用Git将本地项目提交到gitee仓库中
Dame'Seven
博客等级 码龄8年 21粉丝 42原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dame'Seven

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值