持久层框架MyBatisPlus

简介: 本节介绍MyBatisPlus,一款基于MyBatis的增强型ORM框架,简化单表增删改查操作。通过引入`mybatis-plus-boot-starter`并继承`BaseMapper`,即可实现无SQL的CRUD功能,显著提升开发效率。同时支持`@TableName`、`@TableId`、`@TableField`等注解,灵活处理表名、字段映射问题,让数据库操作更简洁、高效。(238字)

前面我们学习过的ORM[Object Relational Mapping(对象关系映射)]持久层框架MyBatis,它可以帮助我们完成单表、多表、动态SQL的业务逻辑处理,与之平级的还有Hibernate,和这节我们要学习的MyBatisPlus了。

1.快速入门
1.1 入门案例

首先我们根据提供的资料导入一下工程案例,一起看下实现下列功能的代码逻辑:
● 新增用户功能
● 根据id查询用户
● 根据id批量查询用户
● 根据id更新用户
● 根据id删除用户
代码执行流程如下:

当我们打开:UserMapper_20231023_150307.xml 文件后,可以看到熟悉的代码

但是我们不禁要思考一个问题,简单的单表的增删改查,他的SQL语句基本固定,这种是否可以优化呢?当然是可以的,这就是这一小节MP要做的事情。而要引入MP框架并应用起来,遵循下面的步骤即可。
1-引入MybatisPlus的起步依赖
MyBatisPlus官方提供了starter,其中集成了Mybatis和MybatisPlus的所有功能,并且实现了自动装配效果。因此我们可以用MybatisPlus的starter代替Mybatis的starter:
● 原来的mybatis依赖可以删除掉


com.baomidou
mybatis-plus-boot-starter
3.5.3.1

2-继承BaseMapper
然后我们在自己的mapper接口中继承BaseMapper,并声明泛型对应的实体类就可以有常见的CRUD代码了。

接下来我们就用MP依次替代上述增删改查的原始代码
● 新增用户功能

● 根据id查询用户

● 根据id批量查询用户

● 根据id更新用户

● 根据id删除用户

整体改造完之后,我们就可以把之前:UserMapper_20231023_150307.xml 中的代码都删掉了,是不是很简洁

1.2 常见注解
通过上面的案例我们可以发现mp的使用很便捷,用户基本是无感知的,那他是如何做到表跟属性值的映射的呢?MyBatisPlus通过扫描实体类,并基于反射获取实体类信息作为数据库表信息。

但是上述的都是正常情况,如果存在一些异常:如表名跟实体类不一样、实体类部分字段表中没有等,就可以通过一些常见注解来完成映射了,MybatisPlus中比较常用的几个注解如下:
● @TableName:用来指定表名
● @TableId:用来指定表中的主键字段信息
● @TableField:用来指定表中的普通字段信息
假设表结构如下

则对应的实体类可以映射如下

相关文章
|
2月前
|
NoSQL Java MongoDB
ongoDB实战演练
本项目实现头条文章评论功能,基于SpringDataMongoDB操作MongoDB数据库,支持评论的增删改查、按文章ID查询及点赞功能。构建article微服务模块,设计Comment实体类,封装评论信息,集成mongodb-driver驱动,完成持久化操作。
|
2月前
|
JSON 算法 Java
DSL语法、搜索结果处理
本文介绍了Elasticsearch(ES)的数据搜索功能,涵盖DSL查询语法、全文检索、精确查询、地理坐标查询及复合查询等类型。通过RestClient实现搜索,并结合黑马旅游案例,演示了酒店搜索、过滤、竞价排名等功能的实现过程,帮助读者掌握ES在实际项目中的应用。
 DSL语法、搜索结果处理
|
SQL 监控 druid
p6spy【SpringBoot集成】使用p6spy-spring-boot-starter集成p6spy监控数据库(配置方法举例)
p6spy【SpringBoot集成】使用p6spy-spring-boot-starter集成p6spy监控数据库(配置方法举例)
3546 0
|
2月前
|
Java 应用服务中间件 nginx
微服务网关与配置中心
本课程学习Spring Cloud Gateway网关的实现与应用,掌握路由配置、过滤器使用、全局身份校验、Nacos统一配置管理及热更新等核心技能,实现微服务架构下的前后端联调与鉴权流程。
|
2月前
|
存储 JSON NoSQL
MongoDB常用命令
本案例介绍如何使用MongoDB存储文章评论数据。通过`use articledb`创建并切换数据库,利用`db.createCollection()`显式或插入文档时隐式创建集合。文档以BSON格式存储,使用`insert()`方法添加数据,如评论内容、用户信息等。支持查看数据库与集合、删除操作,并遵循命名规范。适用于掌握MongoDB基本CRUD操作。(238字)
|
2月前
|
负载均衡 Java Nacos
Gateway服务网关
网关是微服务架构的统一入口,实现请求路由、权限控制与限流。基于Spring Cloud Gateway可实现高性能响应式编程,通过断言和过滤器灵活控制流量,保障系统稳定。
|
2月前
|
负载均衡 算法 架构师
Ribbon负载均衡
本文深入解析Spring Cloud中@LoadBalanced注解的作用,详解Ribbon如何在客户端实现负载均衡,涵盖负载均衡原理、算法分类、硬件与软件方案对比,并介绍Ribbon自定义策略及饥饿加载优化。通过源码流程与配置示例,帮助读者全面掌握Ribbon核心机制,为后续学习Nacos、Gateway等负载均衡实现打下基础。(238字)
|
2月前
|
存储 Ubuntu Linux
容器化部署引擎Docker
本节介绍Docker技术,解决微服务部署中环境不一致、依赖冲突等问题。通过镜像打包应用及依赖,容器隔离运行,实现跨环境无缝迁移。相比虚拟机,Docker更轻量、启动更快、资源占用少。讲解其核心概念:镜像、容器、仓库,以及Docker Hub等镜像管理服务,帮助开发者高效交付应用。
|
2月前
|
NoSQL JavaScript Shell
MongoDB单机部署
本文介绍MongoDB在Windows系统下的安装启动方法,包括下载32/64位安装包、解压配置、命令行或配置文件方式启动服务,并设置数据目录与端口。同时涵盖Shell连接、图形化工具Compass使用及Linux系统安装要点,助您快速部署运行。
|
2月前
|
Dubbo Java 应用服务中间件
Feign远程调用
本章介绍Feign如何优雅替代RestTemplate实现HTTP跨服务调用。通过引入Feign,结合注解声明远程接口,避免服务地址硬编码,提升代码可读性与维护性,并支持自定义日志、编码等配置,实现高效、简洁的微服务通信方案。