Springboot数据访问(整合Mybatis Plus)
mhr18 2025-06-29 17:50 3 浏览 0 评论
Springboot整合Mybatis Plus
1、创建数据表
2、引入maven依赖
mybatis-plus-boot-starter
主要引入这个依赖,其他相关的依赖在这里就不写了。
3、项目结构目录
handler包是处理器包,po包是实体类包,mapper就是mybatis的mapper接口,service就是service接口+impl实现类,至于这个result包是我自定义的统一接口返回封装。
4、编写application.yml文件
配置信息
mybatis-plus.type-aliases-package
它的作用是指定需要扫描的包路径,从这些路径中加载类的类型别名(Type Alias),以便在MyBatis映射文件中简化类名的使用。
mybatis-plus.mapper-locations
存放sql语句的xml文件目录。
mybatis-plus.configuration.map-underscore-to-camel-case
用于设置字段名称的映射规则,即控制数据库字段名和 Java 实体类属性名之间的下划线命名法(underscore)与驼峰命名法(camel case) 是否自动映射。
默认值:false,表示关闭自动映射。
类型:布尔值(true 或 false)
配置作用
开启(true):
当数据库字段名使用下划线命名法(例如:user_name),而 Java 实体类中的属性名使用驼峰命名法(例如:userName)时,MyBatis-Plus 可以自动将这两种命名方式之间进行映射。无需手动编写映射规则(例如通过 @Results 或 <result> 标签),简化开发。
关闭(false):
如果关闭该配置,MyBatis-Plus 不会进行自动映射,数据库字段名和 Java 实体类属性名必须完全一致,否则需要手动指定字段映射关系。
mybatis-plus.configuration.log-impl
org.apache.ibatis.logging.stdout.StdOutImpl
开启SQL打印
mybatis-plus.configuration.cache-enabled
用于控制MyBatis 的二级缓存功能是否启用。
配置作用:
1、启用二级缓存(cache-enabled: true):
(1)启用后,MyBatis 会将查询结果存储在二级缓存中,不同 SqlSession 之间共享缓存数据。
(2)提高查询性能,减少对数据库的访问次数。
(3)如果表数据在缓存期间发生变更,可能会导致缓存数据与数据库不一致,需要额外的缓存清理逻辑。
2、禁用二级缓存(cache-enabled: false):
(1)禁用后,MyBatis 不会为 Mapper 启用二级缓存,所有查询操作都会直接访问数据库。
(2)避免数据一致性问题,但查询效率可能会降低。
mybatis-plus.global-config.banner
用于配置是否显示MyBatis Plus的Banner标志
mybatis-plus.global-config.db-config.id-type
用于设置MyBatis-Plus中实体类主键的生成策略
mybatis-plus.global-config.db-config.field-strategy
其作用是控制 MyBatis-Plus 在执行 SQL 操作(如插入或更新数据)时,是否对字段进行动态判断(是否为 NULL 或空值)。通过这个配置,你可以指定在插入和更新时如何处理实体类中的字段值。
配置选项:
1、NOT_NULL(默认值)
2、IGNORED
3、NOT_EMPTY
使用场景分析:
mybatis-plus.global-config.db-config.column-underline
用于设置实体类字段的命名风格与数据库表字段命名风格之间的映射规则。作用是:控制 MyBatis-Plus 在将 Java 实体类的字段与数据库表字段进行映射时,是否自动将 驼峰命名风格 转换为 下划线命名风格。
column-underline 控制 MyBatis-Plus 是否将 驼峰命名风格字段 自动映射为 下划线命名风格字段。
当设置为 true 时: MyBatis-Plus 会将 Java 的驼峰命名字段(如 userName)自动映射为数据库表的下划线字段(如 user_name)。
当设置为 false 时: MyBatis-Plus 不会进行这种转换,要求 Java 字段名和数据库字段名保持完全一致。
配置示例:
实体类:
假设我们有一个实体类 User,如下:
数据库表结构:
对应的数据库表 user 如下:
配置方式:
SQL映射结果:
1、当 column-underline: true:
MyBatis-Plus 会自动将 userName 映射到 user_name,emailAddress 映射到 email_address。
无需手动指定字段映射。
2、当 column-underline: false:
MyBatis-Plus 假设 Java 字段名与数据库字段名完全一致。
如果数据库字段名是 user_name 或 email_address,则需要手动指定映射关系:
mybatis-plus.global-config.db-config.logic-delete-value
用于指定被标记为删除状态时对应的字段值
mybatis-plus.global-config.db-config.logic-not-delete-value
用于指定表示“未删除”的字段值
mybatis-plus.global-config.db-config.db-type(这个不重要)
用于指定当前项目所使用的数据库类型。
MyBatis-Plus 支持多种数据库(例如 MySQL、Oracle、PostgreSQL 等),此配置项的作用是让框架根据指定的数据库类型执行一些与数据库相关的优化或自动化处理,比如:
数据库的关键字转义
SQL 语法生成的兼容性
分页查询语句的生成
配置值及支持的数据库类型:
mybatis-plus.global-config.refresh
决定了是否在项目运行时刷新MyBatis的Mapper对象缓存(二级缓存)。
配置作用:
当这个配置项的值设置为 true 时,MyBatis-Plus 会在运行时自动刷新 MyBatis 的 Mapper 接口的缓存对象(Mapper 缓存)。
核心作用:主要用于在项目开发或调试阶段,当代码(例如 Mapper 接口或 XML 文件)发生修改时,动态刷新 MyBatis 缓存,而不需要重启项目。
适用场景:
1、热加载需求:开发过程中频繁修改 Mapper 接口(Java 类)或 XML 文件时,启用该配置可以实时生效。
2、减少调试时的重启时间,提高开发效率。
注意:此功能通常在开发环境中使用,生产环境下不建议启用,以避免性能损耗。
mybatis-plus.configuration.call-setters-on-nulls
5、编写Springboot入口类
6、handler包下创建自动填充器
7、创建实体类
po 包下新建 base 包,再创建 BaseEntity
po包下新建Student类,继承BaseEntity
8、创建mapper接口
9、创建service接口及实现类
service接口直接继承 mp 的 IService 接口,同样指定实体类为 Student,这样就能用 IService 里自带的方法。
这里是继承 ServiceImpl,指定对应的 mapper 和类,这样自动化的 curd 操作就完成了。
10、创建Controller类
新增接口
由于学生表的主键id是非自增的,我这里虽然没有setId,但是mybatis-plus会自动给我们生成一个长id,当然你也用你项目里的id生成策略来生成,然后手动setId,如雪花算法生成id,这样会比较好。
用postman请求
http://localhost:8080/student/add
debug 过程如下:
查询接口
StudentServiceImpl:新增如下方法
上面用 service 能做的,用 mapper 同样能做到,因为 service 里内部还是走的 mapper 去查询,可以自己摸索尝试,另外还有更多常用的特殊查询,如模糊查询。
用postman 请求:
http://localhost:8080/student/query/1472863272568754178
相关推荐
- 如何检查 Linux 服务器是物理服务器还是虚拟服务器?
-
在企业级运维、故障排查和性能调优过程中,准确了解服务器的运行环境至关重要。无论是物理机还是虚拟机,都存在各自的优势与限制。在很多场景下,尤其是当你继承一台服务器而不清楚底层硬件细节时,如何快速辨识它是...
- 第四节 Windows 系统 Docker 安装全指南
-
一、Docker在Windows上的运行原理(一)架构限制说明Docker本质上依赖Linux内核特性(如Namespaces、Cgroups等),因此在Windows系统上无法直...
- C++ std:shared_ptr自定义allocator引入内存池
-
当C++项目里做了大量的动态内存分配与释放,可能会导致内存碎片,使系统性能降低。当动态内存分配的开销变得不容忽视时,一种解决办法是一次从操作系统分配一块大的静态内存作为内存池进行手动管理,堆对象内存分...
- Activiti 8.0.0 发布,业务流程管理与工作流系统
-
Activiti8.0.0现已发布。Activiti是一个业务流程管理(BPM)和工作流系统,适用于开发人员和系统管理员。其核心是超快速、稳定的BPMN2流程引擎。Activiti可以...
- MyBatis动态SQL的5种高级玩法,90%的人只用过3种
-
MyBatis动态SQL在日常开发中频繁使用,但大多数开发者仅掌握基础标签。本文将介绍五种高阶技巧,助你解锁更灵活的SQL控制能力。一、智能修剪(Trim标签)应用场景:动态处理字段更新,替代<...
- Springboot数据访问(整合Mybatis Plus)
-
Springboot整合MybatisPlus1、创建数据表2、引入maven依赖mybatis-plus-boot-starter主要引入这个依赖,其他相关的依赖在这里就不写了。3、项目结构目录h...
- 盘点金州勇士在奥克兰13年的13大球星 满满的全是...
-
见证了两个月前勇士与猛龙那个史诗般的系列赛后,甲骨文球馆正式成为了历史。那个大大的红色标志被一个字母一个字母地移除,在周四,一切都成为了过去式。然而这座,别名为“Roaracle”(译注:Roar怒吼...
- Mybatis入门看这一篇就够了(mybatis快速入门)
-
什么是MyBatisMyBatis本是apache的一个开源项目iBatis,2010年这个项目由apachesoftwarefoundation迁移到了googlecode,并且改名为M...
- Springboot数据访问(整合druid数据源)
-
Springboot整合druid数据源基本概念SpringBoot默认的数据源是:2.0之前:org.apache.tomcat.jdbc.pool.DataSource2.0及之后:com.z...
- Linux 中的 "/etc/profile.d" 目录有什么作用 ?
-
什么是/etc/profile.d/目录?/etc/profile.d/目录是Linux系统不可或缺的一部分保留配置脚本。它与/etc/profile文件相关联,这是一个启动脚本,该脚...
- 企业数据库安全管理规范(企业数据库安全管理规范最新版)
-
1.目的为规范数据库系统安全使用活动,降低因使用不当而带来的安全风险,保障数据库系统及相关应用系统的安全,特制定本数据库安全管理规范。2.适用范围本规范中所定义的数据管理内容,特指存放在信息系统数据库...
- Oracle 伪列!这些隐藏用法你都知道吗?
-
在Oracle数据库中,有几位特殊的“成员”——伪列,它们虽然不是表中真实存在的物理列,但却能在数据查询、处理过程中发挥出意想不到的强大作用。今天给大家分享Oracle伪列的使用技巧,无论...
- Oracle 高效处理数据的隐藏神器:临时表妙用
-
各位数据库搬砖人,在Oracle的代码世界里闯荡,处理复杂业务时,是不是总被数据“搅得头大”?今天给大家安利一个超实用的隐藏神器——临时表!当你需要临时存储中间计算结果,又不想污染正式数据表...
- Oracle 数据库查询:多表查询(oracle多表关联查询)
-
一、多表查询基础1.JOIN操作-INNERJOIN:返回两个表中满足连接条件的匹配行,不保留未匹配数据。SELECTa.emp_id,b.dept_nameFROMempl...
- 一文掌握怎么利用Shell+Python实现多数据源的异地备份程序
-
简介:在信息化时代,数据安全和业务连续性已成为企业和个人用户关注的焦点。无论是网站数据、数据库、日志文件,还是用户上传的文档、图片等,数据一旦丢失,损失难以估量。尤其是当数据分布在多个不同的目录、服务...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- 如何检查 Linux 服务器是物理服务器还是虚拟服务器?
- 第四节 Windows 系统 Docker 安装全指南
- C++ std:shared_ptr自定义allocator引入内存池
- Activiti 8.0.0 发布,业务流程管理与工作流系统
- MyBatis动态SQL的5种高级玩法,90%的人只用过3种
- Springboot数据访问(整合Mybatis Plus)
- 盘点金州勇士在奥克兰13年的13大球星 满满的全是...
- Mybatis入门看这一篇就够了(mybatis快速入门)
- Springboot数据访问(整合druid数据源)
- Linux 中的 "/etc/profile.d" 目录有什么作用 ?
- 标签列表
-
- oracle位图索引 (74)
- oracle基目录 (50)
- oracle批量插入数据 (65)
- oracle事务隔离级别 (53)
- oracle主从同步 (55)
- oracle 乐观锁 (51)
- redis 命令 (78)
- php redis (88)
- redis 存储 (66)
- redis 锁 (69)
- 启动 redis (66)
- redis 时间 (56)
- redis 删除 (67)
- redis内存 (57)
- redis并发 (52)
- redis 主从 (69)
- redis 订阅 (51)
- redis 登录 (54)
- redis 面试 (58)
- 阿里 redis (59)
- redis 搭建 (53)
- redis的缓存 (55)
- lua redis (58)
- redis 连接池 (61)
- redis 限流 (51)