MyBatis-Plus关键功能使用

MyBatis与MyBatis-Plus实战指南 本文是一份MyBatis与MyBatis-Plus的完整开发指南,主要涵盖以下内容: 框架对比:MyBatis提供灵活SQL映射能力,适合复杂查询;MyBatis-Plus作为增强工具,简化单表CRUD操作,提高开发效率。 核心功能详解: MyBatis基础:配置、Mapper接口、动态SQL、结果映射 MyBatis-Plus特性:通用Mapper/Service、条件构造器、代码生成器、主键策略 高级特性:分页插件、乐观锁、逻辑删除、动态表名、枚举处理等 整合实践:与SpringBoot的集成方式及事务 阅读详情

前言

用了好几年的MyBatis-Plus,有些偏僻的功能不经常用,去用的时候老是忘记,还需要重新查阅官网,借这篇文章的机会,记录一下,帮助他人也方便自己今后查阅。

部分功能

查询某些字段

有些时候查询的数据不需要返回全部字段,只返回业务中感兴趣的字段,所以我们可以用如下API

User user = baseMapper.selectOne(new LambdaQueryWrapper<User>()
    .eq(User::getId, userId)
    .select(User::getName));//只有name字段有值
String userName = user.getName();

流式查询

MyBatis-Plus 从 3.5.4 版本开始支持流式查询,这是 MyBatis 的原生功能,通过 ResultHandler 接口实现结果集的流式查询。这种查询方式适用于数据跑批或处理大数据的业务场景。

常用方法

  • getResultObject: 获取数据库中的每一条记录。
  • getResultCount: 获取当前处理的结果集条数,每处理一条记录,该计数器会加1,计数从1开始。
  • stop: 停止继续处理结果集,相当于在循环中使用 break 语句。

使用示例

以下是使用流式查询的示例代码,展示了如何结合分页从数据库中拉取数据进行批量处理,以及如何获取表中的所有记录进行处理。

// 结合分页,按批次从数据库拉取数据出来跑批,例如从数据库获取10万记录,做数据处理
Page<H2User> page = new Page<>(1, 100000);
baseMapper.selectList(page, Wrappers.emptyWrapper(), new ResultHandler<H2User>() {
    int count = 0;
    @Override
    public void handleResult(ResultContext<? extends H2User> resultContext) {
        H2User h2User = resultContext.getResultObject();
        System.out.println("当前处理第" + (++count) + "条记录: " + h2User);
        // 在这里进行你的业务处理,比如分发任务
    }
});

// 从数据库获取表所有记录,做数据处理
baseMapper.selectList(Wrappers.emptyWrapper(), new ResultHandler<H2User>() {
    int count = 0;
    @Override
    public void handleResult(ResultContext<? extends H2User> resultContext) {
        H2User h2User = resultContext.getResultObject();
        System.out.println("当前处理第" + (++count) + "条记录: " + h2User);
        // 在这里进行你的业务处理,比如分发任务
    }
});

在上述示例中,我们创建了一个 Page 对象来指定分页参数,然后调用 selectList 方法并传入 ResultHandler 来处理每一条记录。在 ResultHandler 的 handleResult 方法中,我们可以获取当前处理的记录,并进行相应的业务处理。通过计数器 count,我们可以知道当前处理的是第几条记录。

条件判断

Wrapper 方法通常接受一个 boolean 类型的参数,用于决定是否将该条件加入到最终的 SQL 中。

queryWrapper.like(StringUtils.isNotBlank(name), Entity::getName, name)
            .eq(age != null && age >= 0, Entity::getAge, age);

如果某个方法没有显式提供 boolean 类型的参数,则默认为 true,即条件总是会被加入到 SQL 中。

使用Mybatis-Plus,以及sqlite的使用 在实现类的类名后面添加需要继承的ServiceImpl,并且传入泛型UserMapper, User。在接口的类名后面添加需要继承的IService,并且传入泛型User。在类名后面添加需要继承的BaseMapper,并且传入泛型User。在类中加入如下方法,传入一个已经存在数据的id。我们在浏览器输入/getOne路径,查看结果。在类前面加入表名,指明操作哪张表。 阅读详情

相关推荐

炉石传说游戏系统拆解和部分系统分析

一.游戏综述 《炉石传说:魔兽英雄传》是一款由暴雪娱乐公司出品的策略类卡牌游戏。中国大陆地区的独家运营由网易公司代理。2014年3月13日全球同步正式运营。游戏背景设定于暴雪的魔兽系列,共十位魔兽中的角色作为十种不同的职业。而玩家要做的,就是根据己方现有的卡牌组建合适的卡组,指挥英雄,驱动随从,施展法术,与游戏好友或素不相识的对手一决高下。 二.游戏系统拆解图 三.游戏系统部分分析 1. 对战系统 (1)战斗准备 炉石传说开始前都需要配置至少30张卡牌作为出战卡组 .....

Jimmy72236的博客 4923

mybatisplus返回指定字段的两种方式

mybatisplus返回指定字段的两种方式

风水道人 9101

FactoryTool量产神器实战:5分钟搞定多块RK3568板卡并行烧录

本文详细介绍了使用瑞芯微FactoryTool对多块RK3568板卡进行高效并行烧录的实战指南。文章从硬件连接、驱动配置、软件操作到排错技巧,提供了一套完整的量产解决方案,重点阐述了如何利用该工具在5分钟内完成多设备固件烧录,并确保eMMC存储的写入稳定性与效率,大幅提升生产线吞吐量。

b0c1d2的博客 986

mybatisplus查询,只返回list中指定的字段

mybatisplus查询,只返回list中指定的字段

gaoshan12345678910的博客 4150

PostgreSQL隐式类型转换全解析:告别operator does not exist

强类型数据库是现代数据系统的基石,它在带来严谨性的同时,也常常让开发者在类型不匹配报错前束手无策。当一条SQL因bigint与text比较而抛出operator does not exist时,根源往往在于对数据库隐式转换规则的误解。PostgreSQL通过pg_cast系统表将转换划分为隐式、赋值与显式三个级别,并依据操作符解析逻辑决定是否自动提升类型。理解这些机制,不仅能快速定位JOIN、UNION、函数调用等场景下的类型错误,还能帮助开发者合理使用EXPLAIN VERBOSE、pg_typeof等工

weixin_29587015的博客 304

MatGPT:在MATLAB中集成AI助手,实现代码生成与调试自动化

大语言模型(LLM)通过API接口为开发者提供了强大的自然语言理解和代码生成能力,其核心原理是基于海量数据训练的Transformer架构,能够根据上下文预测并生成连贯的文本或代码。这一技术为工程实践带来了革命性价值,特别是在科学计算和算法开发领域,能够显著提升开发效率,实现智能化的代码辅助和问题解答。在实际应用中,开发者常需在IDE与AI工具间频繁切换,导致工作流中断。MatGPT作为一个开源项目,通过深度集成ChatGPT API到MATLAB环境,有效解决了这一痛点。它支持多模态输入、预设提示词管理和

weixin_42388898的博客 499

Mybatis-Plus:条件构造器select方法返回指定字段

Mybatis-Plus:条件构造器select方法返回指定字段一:Mybatis-Plus 条件构造器select方法介绍二:实例实例一:查找薪水大于3500 名字里有“小”的 员工 (只显示编号和姓名)实例二:查找薪水大于3500 名字里有“小”的 员工 (排除出生日期和性别)实例三:查询每个部门的平均薪资 一:Mybatis-Plus 条件构造器select方法介绍 根据业务需求,有时候只需要返回特定的几个数据表字段,我们通过条件构造器的select方法可以指定; 还有一种情况,假如数据库字段很多的时

a898712940的博客 6742

AI应用架构师总结:智能问答系统用户意图识别的8种方法与实践!

意图识别是智能问答系统的大脑入口,其技术水平决定了系统能否准确捕捉用户的核心诉求。本文系统剖析了从基础规则到前沿PLM的8种核心意图识别方法透明简单,冷启动快,维护成本高。中等规模场景基线,依赖特征工程。利用词义和局部/序列信息,训练成本高。当前最优精度,需大量资源。添加意图灵活,冷启动友好,精度可能略逊。提升鲁棒性,系统变复杂。解决歧义和自然交互的关键(多轮)。增强专业领域理解和推理能力。成功的意图识别模块需要:精准的意图定义(Schema)是前提!

AI云原生与云计算技术学院 1632

用MyBatisPlus写分组查询,并且只返回部分字段,求和

使用myBatisPlus实现分组求和查询

qq_37781796的博客 4610

173、NPU的编译器开发:开源社区贡献指南

本文分享了在NPU编译器开源社区贡献的经验心得。作者通过实际案例(如卷积维度错误、NaN输出等)阐述了NPU编译器开发的特殊性:硬件迭代快、边界条件复杂、厂商代码不可全信。提出有价值的贡献应聚焦硬件适配测试、性能剖析工具和反模式文档三类内容。强调用实测数据沟通、主动承担维护责任、保持代码通用性等社区协作技巧,并建议通过RFC提前沟通、附硬件实测数据等方式提高PR通过率。最后指出,NPU编译器开发是与聪明人共同填坑的过程,鼓励开发者提交"有诚意的代码"而非完美代码。

m0_50546716的博客 35

化工设计软件:AVEVA E3D二次开发_(8).管道系统设计

在 AVEVA E3D Design 中,管道规格的定义是确保设计一致性和标准化的关键。通过二次开发,可以自动生成并管理管道规格。下面是一个示例,展示如何通过编写脚本来定义和管理管道规格。# 导入必要的库 import clr。

kkchenjj的博客 969

mybatis-plus一些关键配置

mybatis-plus:一些关键配置 1. configLocation MyBatis 配置文件位置,如果您有单独的 MyBatis 配置,请将其路径配置到 configLocation 中。如果是springboot中做如下配置: #mybatis核心配置文件的位置配置 mybatis-plus: config-location: classpath:mybatis-config.xml 2.mapper.xml文件位置的配置 MyBatis Mapper 所对应的 XML 文件位置,如果您在

xu2414506319的博客 1746

手把手教你学AutoSAR - 总目录

鉴于近期较多博友问及微信群,如下可申请好友验证,请备注“autosar”,否则可能添加不通过。验证通过后,拉入讨论群。PS:本人鉴于工作事项可能不能及时回复问题,可在交流群内部和其他博友之间相互沟通交流经验。欢迎来到桃源乐游的《AutoSAR配置与实践》,以下为学习大纲,蓝色字体点击可跳转。

nihaoljq2010的博客 7459

MyBatis-Plus

MyBatis-Plus 🚀 为简化开发而生MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window) 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。特性:无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单

c55555556的博客 925

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Mybatis-Plus和Mybatis区别

核心关系:MyBatis-Plus 是 MyBatis 的增强版,完全兼容 MyBatis,不改变原有使用方式,仅做功能补充。核心差异:MP 提供了「通用 CRUD、条件构造器、分页插件、代码生成器」等开箱即用的功能,大幅减少重复代码;而原生 MyBatis 更侧重 SQL 的手动控制。选型建议:优先选 MyBatis-Plus(开发效率更高),遇到复杂 SQL 时,仍可像原生 MyBatis 一样手动编写,兼顾效率与灵活性。

weixin_53050448的博客 1228

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

SpringBoot 使用 mybatis-plus 实现分页功能

【代码】SpringBoot 使用 mybatis-plus 实现分页功能。

2301_76216060的博客 584

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Mybatis-Plus

官网:https://mp.baomidou.com/ 1.核心功能:代码生成器 2.逻辑删除 1)、配置全局的逻辑删除规则(省略) 2)、配置逻辑删除的组件Bean(省略) 3)、给Bean加上逻辑删除注解@TableLogic 步骤1: 配置com.baomidou.mybatisplus.core.config.GlobalConfig$DbConfig 例: application.yml mybatis-plus: global-config: db-config: l

JohnMin的博客 336

MyBatis-plus 分页功能实现

为了让springboot得知我们配置了分页功能,需要创建配置类,进行以下配置。该代码实现了 文章列表的分页查询,并遵循置顶优先,创建日期次优先的规则排序。@MapperScan mybatis扫包,标注配置的应用包位置。Springboot下实现博客的文章列表分页。@configuration 标注为配置注解。函数从Page对象中获取article数组。传入页码信息 (第几页,一页多少条)将article数组传回前端。//mybatis扫包。函数,返回Page对象。

web15286201346的博客 1067

MyBatis-Plus自动填充功能实现原理与使用技巧

在日常开发中,我们经常需要处理一些公共字段的自动填充,比如创建时间、更新时间、创建人、更新人等。手动处理这些字段不仅繁琐,还容易出错。MyBatis-Plus的自动填充功能(Auto Fill)正是为了解决这一痛点而生,它能够优雅地实现字段的自动填充,让开发者专注于业务逻辑的实现。 本文将深入剖析MyBatis-Plus自动填充功能的实现原理,并分享实用的使用技巧和最佳实践。 ## 自动填充功...

gitblog_01410的博客 893

MyBatis-Plus3.x版本使用入门、问题

Mybatis-Plus是Mybatis的增强版,他只是在Mybatis的基础上增加了功能,且并未对原有功能进行任何的改动。可谓是非常良心的一款开源产品,今天我就来给大家简单的说一下以下几个功能和踩过的坑。2020/9/28MybatisX 插件重新开始更新并维护 对于看官网看不太懂的朋友,可以看下这个视频,2.0倍速也可哦,https://www.imooc.com/learn/1171慕课上的mybatis-plus的视频2021/1/13Mybatis-Plus 3.X版本代码生成器模板解决

Linn的博客 1万+

mybatis-plus 的扩展功能

代码生成器DB静态工具。

2401_88987098的博客 30

MyBatis-Plus 使用总结

MyBatis-Plus 虽然提供了很多方法,但不可能覆盖所有复杂业务。所以它也支持自定义 SQL。自定义 SQL 的思路是:SQL 主体自己写,查询条件仍然可以用 Wrapper 拼接。@Mapper@Testew也就是说,你不能以为传了实体对象,它就自动帮你拼 where。自定义 SQL 时,SQL 主体需要自己写清楚,条件部分可以交给 Wrapper。MyBatis-Plus 仍然支持 MyBatis 原来的 XML 写法。

m0_65636721的博客 223

MyBatis-Plus01: MyBatis和MyBatis-Plus之间的关系

MyBatis-Plus = MyBatis + 自动化增强关系:- 包含关系:MP包含了MyBatis所有功能- 增强关系:MP在MyBatis基础上提供了大量便捷功能- 兼容关系:MP完全兼容MyBatis的写法。

qq_31532983的博客 514

Mybatis-plus入门级使用

mybatis-plus新手教学

pxl20171799的博客 141

MyBatis-Plus基本使用

MP特性 无侵入,强大的CURD(增删查改)方法 支持lambda形式(JDK8新特性)调用、 支持各种数据库 支持主键自动生成,AR模式(实体类继承MODEL) 支持全局通用方法注入 支持数据库关键词自动转义 内置代码生成器,物理分页插件,内置性能分析插件(输出SQL语句) 内置全局拦截插件,sql注入剥离器(防止注入攻击) ...

qwredqwr的博客 481
上一篇: SpringBoot 多环境配置文件切换
jothan_lee
博客等级 码龄9年 30粉丝 58原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值