工程POM引入mybatis-plus-boot-starter后
一、配置 Mapper 扫描在 Spring Boot 启动类上添加MapperScan注解指定 Mapper 接口所在的包路径javaimport org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; SpringBootApplication MapperScan(com.seazon.cloud.mapper) // 替换成你实际的 Mapper 包路径 public class DriverAnalysisApplication { public static void main(String[] args) { SpringApplication.run(DriverAnalysisApplication.class, args); } }或者你也可以在每个 Mapper 接口上单独使用Mapper注解不推荐每个都要写比较繁琐。二、编写 Entity 实体类javaimport com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.IdType; import lombok.Data; import java.time.LocalDateTime; Data TableName(driver_info) // 对应数据库表名 public class DriverInfo { TableId(type IdType.AUTO) // 主键自增策略 private Long id; private String driverName; private String driverNo; private Integer age; private LocalDateTime createTime; private LocalDateTime updateTime; }常用注解说明注解作用TableName指定数据库表名TableId指定主键字段TableField指定字段映射非主键TableLogic逻辑删除字段三、编写 Mapper 接口javaimport com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; import com.seazon.cloud.entity.DriverInfo; Mapper public interface DriverInfoMapper extends BaseMapperDriverInfo { // 继承 BaseMapper 后已经拥有了基础的 CRUD 方法 // insert、deleteById、updateById、selectById、selectList 等 // 如果有自定义复杂查询可以在这里写方法并配合 XML 或注解实现 // 例如 // Select(SELECT * FROM driver_info WHERE driver_no #{driverNo}) // DriverInfo selectByDriverNo(String driverNo); }BaseMapper提供了哪些方法方法作用insert(T entity)插入一条记录deleteById(Serializable id)根据 ID 删除updateById(T entity)根据 ID 更新selectById(Serializable id)根据 ID 查询selectList(WrapperT queryWrapper)条件查询列表selectPage(IPageT page, WrapperT queryWrapper)分页查询四、Service 层使用方式一直接注入 Mapper简单场景javaimport org.springframework.stereotype.Service; import org.springframework.beans.factory.annotation.Autowired; import com.seazon.cloud.mapper.DriverInfoMapper; import com.seazon.cloud.entity.DriverInfo; Service public class DriverService { Autowired private DriverInfoMapper driverInfoMapper; public DriverInfo getDriverById(Long id) { return driverInfoMapper.selectById(id); } public boolean saveDriver(DriverInfo driver) { return driverInfoMapper.insert(driver) 0; } }方式二使用 MyBatis-Plus 的 Service 封装推荐MyBatis-Plus 提供了更强大的 Service 层封装支持更多高级功能。1. 定义 Service 接口javaimport com.baomidou.mybatisplus.extension.service.IService; import com.seazon.cloud.entity.DriverInfo; public interface IDriverService extends IServiceDriverInfo { // 可以在这里定义额外的业务方法 DriverInfo getByDriverNo(String driverNo); }2. 实现 Service 接口javaimport com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; import com.seazon.cloud.mapper.DriverInfoMapper; import com.seazon.cloud.entity.DriverInfo; Service public class DriverServiceImpl extends ServiceImplDriverInfoMapper, DriverInfo implements IDriverService { Override public DriverInfo getByDriverNo(String driverNo) { // 使用 QueryWrapper 构造查询条件 return this.lambdaQuery() .eq(DriverInfo::getDriverNo, driverNo) .one(); } }3. 在 Controller 或其他地方使用 ServicejavaRestController RequestMapping(/api/driver) public class DriverController { Autowired private IDriverService driverService; GetMapping(/{id}) public DriverInfo getDriver(PathVariable Long id) { return driverService.getById(id); } PostMapping public boolean saveDriver(RequestBody DriverInfo driver) { return driverService.save(driver); } }五、MyBatis-Plus 常用查询示例javaimport com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; // 1. 简单条件查询 LambdaQueryWrapperDriverInfo wrapper new LambdaQueryWrapper(); wrapper.eq(DriverInfo::getAge, 25) .like(DriverInfo::getDriverName, 张); ListDriverInfo list driverInfoMapper.selectList(wrapper); // 2. 分页查询 PageDriverInfo page new Page(1, 10); // 第1页每页10条 IPageDriverInfo result driverInfoMapper.selectPage(page, null); // 3. 多条件查询 LambdaQueryWrapperDriverInfo wrapper new LambdaQueryWrapper(); wrapper.between(DriverInfo::getAge, 20, 30) .orderByDesc(DriverInfo::getCreateTime); ListDriverInfo list driverInfoMapper.selectList(wrapper);六、配置 MyBatis-Plus可选在application.yml或application.properties中添加配置yamlmybatis-plus: # 实体类扫描包可以不用写因为 TableName 已经指定了表名 # type-aliases-package: com.seazon.cloud.entity # Mapper XML 文件位置如果使用 XML 方式 mapper-locations: classpath:mapper/*.xml # 全局配置 global-config: db-config: # 逻辑删除字段名 logic-delete-field: deleted # 逻辑删除值已删除 logic-delete-value: 1 # 逻辑未删除值未删除 logic-not-delete-value: 0 # 主键类型自增 id-type: auto configuration: # 开启驼峰命名转换 map-underscore-to-camel-case: true # 开启 SQL 日志开发环境方便调试 log-impl: org.apache.ibatis.logging.stdout.StdOutImpl七、验证是否生效启动项目观察日志中是否有 MyBatis-Plus 相关的初始化信息。写一个简单的测试接口或单元测试调用 Mapper 或 Service 方法确认能正常操作数据库。javaSpringBootTest public class DriverTest { Autowired private DriverInfoMapper driverInfoMapper; Test public void testSelect() { ListDriverInfo list driverInfoMapper.selectList(null); System.out.println(数据条数 list.size()); } }总结步骤关键操作1在启动类添加MapperScan2编写 Entity使用TableName、TableId等注解3编写 Mapper 接口继承BaseMapperT4在 Service 中注入 Mapper 或继承ServiceImpl5可选在application.yml中配置 MyBatis-Plus按照以上步骤操作后MyBatis-Plus 就能在你的项目中正常工作了。

相关新闻

私域直播系统怎么选?能不能防薅羊毛很重要

私域直播系统怎么选?能不能防薅羊毛很重要

很多私域零售老板,都有一个共同的、长期的痛苦:顾客感到不公平。这种不公平感,来源于一个很常见的经营场景:真正长期消费、贡献了大部分利润的老顾客,和那些专门奔着福利来的“羊毛党”,享受的权益却是一样…

2026/7/23 4:31:57 阅读更多 →
抓包不再靠猜:基于LLM的协议语义理解引擎上线首周即拦截3类零日API滥用攻击

抓包不再靠猜:基于LLM的协议语义理解引擎上线首周即拦截3类零日API滥用攻击

更多请点击: https://codechina.net 第一章:抓包不再靠猜:基于LLM的协议语义理解引擎上线首周即拦截3类零日API滥用攻击 传统API安全网关依赖正则匹配与静态签名,面对未见过的参数组合、语义等价变形(如 id1%3BSELE…

2026/7/23 4:30:57 阅读更多 →
当Agent遇上本地数据:我是如何用ig50构建智能选股体系的

当Agent遇上本地数据:我是如何用ig50构建智能选股体系的

当WorkBuddy遇上本地数据:我是如何用本地数据引擎构建智能选股体系的 写在前面 我不是什么量化大佬,就是一个普普通通的A股交易者。 之前用WorkBuddy做股票分析的时候,最大的感受就是——数据调用的速度永远跟不上思路的变化。每次问一个问题…

2026/7/23 4:30:57 阅读更多 →

最新新闻

AI如何降低科研计算复杂度:从基因比到材料模拟的实战指南

AI如何降低科研计算复杂度:从基因比到材料模拟的实战指南

如果你是一位科研工作者,最近可能感受到了这样的变化:过去需要花费数周时间进行数据清洗、模型调参和结果分析的复杂研究流程,现在通过AI工具可以在几小时内完成初步探索。这不仅仅是效率的提升,更是研究范式的根本转变。传统学术…

2026/7/23 5:12:11 阅读更多 →
实战测试10款降AIGC网站:只选真正管用的那一款!

实战测试10款降AIGC网站:只选真正管用的那一款!

随着AI写作工具的普及,越来越多的学生和职场人士开始依赖它来提升论文写作效率和内容创作速度。然而,问题也随之而来:高校、平台和期刊对AI生成内容的检测标准越来越严格,许多人在提交论文或稿件时发现,自己的文字被系…

2026/7/23 5:12:11 阅读更多 →
深入解析I2C与CAN总线寄存器配置及中断处理实战

深入解析I2C与CAN总线寄存器配置及中断处理实战

1. 项目概述与核心价值在嵌入式系统开发中,I2C和CAN总线是两种绕不开的通信协议。我接触过不少项目,从简单的传感器数据采集到复杂的车载网络,这两种接口几乎无处不在。很多工程师在初期配置时,往往对着数据手册里密密麻麻的寄存器…

2026/7/23 5:12:11 阅读更多 →
Tiva™ TM4C ADC核心寄存器解析:从数据流健康到多通道同步采样的实战指南

Tiva™ TM4C ADC核心寄存器解析:从数据流健康到多通道同步采样的实战指南

1. 项目概述在嵌入式系统开发中,模数转换器(ADC)的配置与调试往往是项目成败的关键一环。很多工程师在初次接触像Tiva™ TM4C这类功能强大的微控制器时,面对动辄几十页的ADC寄存器手册,常常感到无从下手。我们往往只关…

2026/7/23 5:12:11 阅读更多 →
C++文件操作实战:从基础逐行读取到CSV解析与性能优化

C++文件操作实战:从基础逐行读取到CSV解析与性能优化

1. 项目概述:为什么文件操作是C的必修课? 如果你正在为期末大作业或者毕业设计发愁,尤其是那些需要处理数据文件、日志分析或者配置读取的任务,那么“文件操作”这个坎儿你大概率是绕不过去的。我见过太多同学,C语法学…

2026/7/23 5:12:11 阅读更多 →
架构实战第3篇:三个文件消灭90%重复代码-泛型CRUD架构解析

架构实战第3篇:三个文件消灭90%重复代码-泛型CRUD架构解析

摘要:在Java企业级开发中,单表CRUD是最常见也是最枯燥的代码。每新增一个业务实体,就要写一套几乎相同的Controller、Service——结构雷同,却又不得不写。《鹿鲸项目管理工具》仅用三个文件——IOneEntityService接口、OneEntityServiceImpl抽…

2026/7/23 5:11:11 阅读更多 →

日新闻

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:25 阅读更多 →
AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

更多请点击: https://codechina.net 第一章:AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析 在对2,346篇跨行业AI生成文案的A/B测试数据进行聚类分析后,我们发现&#xff1…

2026/7/23 0:01:26 阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:01:26 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 19:43:43 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/22 12:54:44 阅读更多 →

月新闻