网站首页 > 技术文章 正文
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
猜你喜欢
- 2025-08-03 经常使用到开源的MySQL,今天我们就来系统地认识一下
- 2025-08-03 「面试必备篇」数据库不得不知道的那些事!转发收藏
- 2025-08-03 Flask-SQLAlchemy使用记录
- 2025-08-03 如何运用数据库高级查询的方法?
- 2025-08-03 「避坑宝典」为大家分享笔者在22 年所遇到“匪夷所思”的 Bug 趣事
- 2025-08-03 SQL点滴(查询篇):数据库基础查询案例实战
- 2025-08-03 如何运用数据定义语言 DDL?
- 2025-08-03 Pinot 架构分析
- 2025-08-03 Java版本选型终极指南:8 vs 17 vs 21特性对决!大龄程序员踩坑总结
- 2025-08-03 运维小白---centOS系统下部署基础项目
你 发表评论:
欢迎- 644℃几个Oracle空值处理函数 oracle处理null值的函数
- 634℃Oracle分析函数之Lag和Lead()使用
- 628℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 625℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 620℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 608℃【数据统计分析】详解Oracle分组函数之CUBE
- 599℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 584℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端获取当前时间 (50)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle约束 (54)
- oracle 中文 (51)
- oracle链接 (54)
- oracle的函数 (58)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)