专业编程教程与实战项目分享平台

网站首页 > 技术文章 正文

Springboot数据访问(整合Mybatis Plus)

ins518 2025-08-03 05:19:43 技术文章 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


Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表