SpringBoot系列:MybatisPlus的入门级使用教程(上)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 今天是大年初二,xdm都去哪里玩了?我在家宅了一天,没地方去的那就继续一起学习,内卷起来!

前言


今天是大年初二,xdm都去哪里玩了?我在家宅了一天,没地方去的那就继续一起学习,内卷起来!


最近学习了一款很不错的mybatis增强工具,叫做mybatisplus。今天就简单介绍下它的使用。


我们以前在使用Mybatis进行项目开发的时候,最繁琐的事情就是实体类,dao接口,mapper.xml文件的编写,几乎每个表都需要对应写一套,并且大部分的工作量都在最基本的增删改查上。如果表中的字段进行了修改,那么实体类,mapper文件甚至dao接口都要进行修改。


MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。有了它我们不再需要写多余的配置文件或者方法。我用完了之后,一个感觉那就是太爽了吧!!!具体特性可以参考官网介绍:


142ffef936d0464d8ab5727e221f66e7~tplv-k3u1fbpfcp-zoom-in-crop-mark_1304_0_0_0.webp.jpg


MybatisPlus实战


首先需要创建数据库及表,语句如下: 创建user表:


CREATE TABLE USER(  id BIGINT(20) NOT NULL COMMENT '主键id',  name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',  age INT(11) NULL DEFAULT NULL COMMENT '年龄',  email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',  PRIMARY KEY(id));
插入数据:
INSERT into USER(id,name,age,email) values(1,'卡莎',24,'kasha@lol.com'),(2,'薇恩',31,'weien@lolo.com'),(3,'盖伦',44,'gailun@lolo.com')
复制代码


接着创建一个springboot基本工程,创建教程可以参考:SpringBoot入门:使用IDEA和Eclip se构建第一个SpringBoot项目。我这里使用的工具是idea,springboot版本是2.2.1。pom 文件如下:


<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">    <modelVersion>4.0.0</modelVersion>    <parent>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-parent</artifactId>        <version>2.2.1.RELEASE</version>        <relativePath/> <!-- lookup parent from repository -->    </parent>    <groupId>com.jiangxia</groupId>    <artifactId>mybatisplusdemo</artifactId>    <version>0.0.1-SNAPSHOT</version>    <name>mybatisplusdemo</name>    <description>Demo project for Spring Boot</description>    <properties>        <java.version>1.8</java.version>    </properties>    <dependencies>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter</artifactId>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-test</artifactId>            <scope>test</scope>            <exclusions>                <exclusion>                    <groupId>org.junit.vintage</groupId>                    <artifactId>junit-vintage-engine</artifactId>                </exclusion>            </exclusions>        </dependency>        <!--mybatis-plus 注意:在引入MyBatis-Plus 之后请不要再次引入 MyBatis 以及 MyBatis-Spring,以避免因版本差异导致的问题。-->        <dependency>            <groupId>com.baomidou</groupId>            <artifactId>mybatis-plus-boot-starter</artifactId>            <version>3.0.5</version>        </dependency>        <!--mysql-->        <dependency>            <groupId>mysql</groupId>            <artifactId>mysql-connector-java</artifactId>        </dependency>        <!--lombok用来简化实体类:需要下载lombok插件-->        <dependency>            <groupId>org.projectlombok</groupId>            <artifactId>lombok</artifactId>        </dependency>    </dependencies>    <build>        <plugins>            <plugin>                <groupId>org.springframework.boot</groupId>                <artifactId>spring-boot-maven-plugin</artifactId>            </plugin>        </plugins>    </build></project>
复制代码


application.properties配置文件如下:


#mysql数据库连接:
spring.datasource.driverclassname=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/mybatisplusdb?serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=jiang
#mybatis-plus日志配置
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
复制代码


这里需要根据自己的实际情况进行配置。 接着就是user的实体类:


@Datapublic class User {    
private Long id;    
private String name;    
private Integer age;    
private String email;}
复制代码


mapper接口如下:


//需要继承mybatisplus的basemapper接口,并且泛型类型是实体类
@Repositorypublic interface UserMapper extends BaseMapper<User> {}
复制代码


这里不需要写任何的方法,只需要继承mybatisplus提供的BaseMapper接口并且泛型是我们的实体就可以了。因为BaseMapper提供了很全的CRUD方法,BaseMappe源码如下:


public interface BaseMapper<T> {    
int insert(T var1);    
int deleteById(Serializable var1);    
int deleteByMap(@Param("cm") Map<String, Object> var1);    
int delete(@Param("ew") Wrapper<T> var1);    
int deleteBatchIds(@Param("coll") Collection<? extends Serializable> var1);    
int updateById(@Param("et") T var1);    
int update(@Param("et") T var1, @Param("ew") Wrapper<T> var2);    
T selectById(Serializable var1);    
List<T> selectBatchIds(@Param("coll") Collection<? extends Serializable> var1);    
List<T> selectByMap(@Param("cm") Map<String, Object> var1);    
T selectOne(@Param("ew") Wrapper<T> var1);    
Integer selectCount(@Param("ew") Wrapper<T> var1);    
List<T> selectList(@Param("ew") Wrapper<T> var1);    
List<Map<String, Object>> selectMaps(@Param("ew") Wrapper<T> var1);   
List<Object> selectObjs(@Param("ew") Wrapper<T> var1);    
IPage<T> selectPage(IPage<T> var1, @Param("ew") Wrapper<T> var2);    
IPage<Map<String, Object>> selectMapsPage(IPage<T> var1, @Param("ew") Wrapper<T> var2);}
复制代码


在主类上添加mapper包扫描注解: @SpringBootApplication//扫描mapper接口的包 不加这个注解的话就需要写mapper接口的实现类,否启动会报错,找不到


mapper@MapperScan("com.jiangxia.mybatisplusdemo.mapper")
public class MybatisplusdemoApplication {    
public static void main(String[] args) {
SpringApplication.run(MybatisplusdemoApplication.class, args);   
}}
复制代码


这里就基本可以了,接着在测试类中进行测试:


@SpringBootTestclass MybatisplusdemoApplicationTests {    
@Autowired    
//下述userMapper会红色报错,可以不理会 也能运行,解决办法:UserMapper上加@Service或者@Mapper、@Repository注解    
UserMapper userMapper;    
@Test    
//查询所有数据    
public void findAll(){        
List<User> users = userMapper.selectList(null);        
System.out.println(users);    
}}
复制代码


run测试方法,查询所有数据,结果如下:


微信截图_20220521205107.png


并且因为加入了mybatisplus提供的日志,所以控制台将底层的sql语句的执行过程也一并 打印了出来:


addda063746642da8c3c5ffce9c6332e~tplv-k3u1fbpfcp-zoom-in-crop-mark_1304_0_0_0.webp.jpg


插入数据操作:


//插入数据    
 @Test    
 public void insertUser(){        
 User user = new User();        
 user.setName("德莱文兄弟");        
 user.setAge(23);        
 user.setEmail("delaiwen@lol.com");        
 int insertcount = userMapper.insert(user);        
 System.out.println("插入数据的条数是:"+insertcount);    
 }
复制代码


结果如下:


8e9044519f594bad8907cf98ca9c8112~tplv-k3u1fbpfcp-zoom-in-crop-mark_1304_0_0_0.webp.jpg


c97f0fac45a940408892b8c893791175~tplv-k3u1fbpfcp-zoom-in-crop-mark_1304_0_0_0.webp.jpg


可以发现已经插入了数据,并且我们之前创建表的时候id主键并不是自增的,而且刚刚的插入语句也没有插入id,但是这里会有id的值,而且是一个10位的全局唯一的主键id,这是 因为mp有主键生成策略。可以在实体类的主键上通过@TableID配置主键生成策略:


public class User {    
@TableId(type = IdType.AUTO)  
//自动增长策略    
private Long id;    
private String name;    
private Integer age;    
private String email;
复制代码


可以设置的主键生成策略有以下几种:


public enum IdType {    
AUTO(0),    
NONE(1),    
INPUT(2),    
ID_WORKER(3),    
UUID(4),    
ID_WORKER_STR(5);
复制代码


其中ID_WORKER和ID_WORKER_STR是mp自带的生成策略。 ID_WORKER是mp默认的生成策略。可以生成19位值,数字类型使用这种策略, 比如long类型。 ID_WORKER_STR也是生成19位值,字符串类型使用这种策略,比如string。 总结 以上就是关于mybatisplus的一些简单的介绍以及关于查找和插入的简单使用,篇幅有限后续将继续更新。更多关于mybatisplus的内容可以参考以下内容:


mybatisplus源码地址:
https://gitcode.net/mirrors/baomidou/mybatis-plus?utm_source=csdn_github_accelerator
官网:
https://baomidou.com/pages/24112f/
复制代码


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2月前
|
Cloud Native Java C++
Springboot3新特性:开发第一个 GraalVM 本机应用程序(完整教程)
文章介绍如何在Spring Boot 3中利用GraalVM将Java应用程序编译成独立的本机二进制文件,从而提高启动速度、减少内存占用,并实现不依赖JVM运行。
235 1
Springboot3新特性:开发第一个 GraalVM 本机应用程序(完整教程)
|
2月前
|
前端开发 Java 数据安全/隐私保护
用户登录前后端开发(一个简单完整的小项目)——SpringBoot与session验证(带前后端源码)全方位全流程超详细教程
文章通过一个简单的SpringBoot项目,详细介绍了前后端如何实现用户登录功能,包括前端登录页面的创建、后端登录逻辑的处理、使用session验证用户身份以及获取已登录用户信息的方法。
232 2
用户登录前后端开发(一个简单完整的小项目)——SpringBoot与session验证(带前后端源码)全方位全流程超详细教程
|
15天前
|
SQL Java 数据库连接
【MyBatisPlus·最新教程】包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段
MyBatis-Plus是一个MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。本文讲解了最新版MP的使用教程,包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段等核心功能。
【MyBatisPlus·最新教程】包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段
|
24天前
|
SQL 缓存 Java
【详细实用のMyBatis教程】获取参数值和结果的各种情况、自定义映射、动态SQL、多级缓存、逆向工程、分页插件
本文详细介绍了MyBatis的各种常见用法MyBatis多级缓存、逆向工程、分页插件 包括获取参数值和结果的各种情况、自定义映射resultMap、动态SQL
【详细实用のMyBatis教程】获取参数值和结果的各种情况、自定义映射、动态SQL、多级缓存、逆向工程、分页插件
|
1月前
|
SQL 存储 数据库
深入理解@TableField注解的使用-MybatisPlus教程
`@TableField`注解在MyBatis-Plus中是一个非常灵活和强大的工具,能够帮助开发者精细控制实体类与数据库表字段之间的映射关系。通过合理使用 `@TableField`注解,可以实现字段名称映射、自动填充、条件查询以及自定义类型处理等高级功能。这些功能在实际开发中,可以显著提高代码的可读性和维护性。如果需要进一步优化和管理你的MyBatis-Plus应用程
131 3
|
2月前
|
Java API Apache
Springboot+shiro,完整教程,带你学会shiro
这篇文章提供了一个完整的Apache Shiro与Spring Boot结合使用的教程,包括Shiro的配置、使用以及在非Web和Web环境中进行身份验证和授权的示例。
72 2
Springboot+shiro,完整教程,带你学会shiro
|
2月前
|
前端开发 Java Apache
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
本文详细讲解了如何整合Apache Shiro与Spring Boot项目,包括数据库准备、项目配置、实体类、Mapper、Service、Controller的创建和配置,以及Shiro的配置和使用。
373 1
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
|
2月前
|
缓存 NoSQL Java
springboot的缓存和redis缓存,入门级别教程
本文介绍了Spring Boot中的缓存机制,包括使用默认的JVM缓存和集成Redis缓存,以及如何配置和使用缓存来提高应用程序性能。
116 1
springboot的缓存和redis缓存,入门级别教程
|
3月前
|
JavaScript Java 关系型数据库
毕设项目&课程设计&毕设项目:基于springboot+vue实现的在线考试系统(含教程&源码&数据库数据)
本文介绍了一个基于Spring Boot和Vue.js实现的在线考试系统。随着在线教育的发展,在线考试系统的重要性日益凸显。该系统不仅能提高教学效率,减轻教师负担,还为学生提供了灵活便捷的考试方式。技术栈包括Spring Boot、Vue.js、Element-UI等,支持多种角色登录,具备考试管理、题库管理、成绩查询等功能。系统采用前后端分离架构,具备高性能和扩展性,未来可进一步优化并引入AI技术提升智能化水平。
毕设项目&课程设计&毕设项目:基于springboot+vue实现的在线考试系统(含教程&源码&数据库数据)
|
3月前
|
Java 关系型数据库 MySQL
毕设项目&课程设计&毕设项目:springboot+jsp实现的房屋租租赁系统(含教程&源码&数据库数据)
本文介绍了一款基于Spring Boot和JSP技术的房屋租赁系统,旨在通过自动化和信息化手段提升房屋管理效率,优化租户体验。系统采用JDK 1.8、Maven 3.6、MySQL 8.0、JSP、Layui和Spring Boot 2.0等技术栈,实现了高效的房源管理和便捷的租户服务。通过该系统,房东可以轻松管理房源,租户可以快速找到合适的住所,双方都能享受数字化带来的便利。未来,系统将持续优化升级,提供更多完善的服务。
毕设项目&课程设计&毕设项目:springboot+jsp实现的房屋租租赁系统(含教程&源码&数据库数据)