0


Java真的不难(四十七)Mybatis-Plus的入门及应用

Mybatis-Plus的入门及应用

哈喽大家好~ 好久不见!!!
距离上次写作已经过去一个半月啦,这段断更的时间呢小应学长也在准备工作的事情,一直在面试之类,最后在八月一号入职啦,看到文章的小伙伴也要加油哟!
是这样,在工作期间一个项目用到了Mybatis-Plus,突然看自己的博客发现之前没有写这篇文章,所以就趁着这个机会来写吧。那我们就开始吧~~


一、什么是Mybatis-Plus?

其实很好理解,顾名思义就是Myabtis的加强版,就是这么好理解
我们先看看Mybatis-Plus的官网:

https://baomidou.com/

在这里插入图片描述
我们看到这只鸟变成了蓝色,从图片上也可以看到官网对Mybatis-Plus的一个简介:为简化开发而生

在官网也可以看到Mybatis-Plus的特性以及所支持的数据库
在这里插入图片描述
看完这些,大家是不是都想快速的试试实战效果如何?


二、Mybatis-Plus的快速入门

一、数据库的搭建

首先我们需要一张数据表,这样就按照官网的步骤来吧,采用的是MySQL数据库,建表SQL:
表名:user

DROPTABLEIFEXISTS mp_user;CREATETABLEuser(
    id BIGINT(20)NOTNULLCOMMENT'主键ID',
    name VARCHAR(30)NULLDEFAULTNULLCOMMENT'姓名',
    age INT(11)NULLDEFAULTNULLCOMMENT'年龄',
    email VARCHAR(50)NULLDEFAULTNULLCOMMENT'邮箱',PRIMARYKEY(id));

创建成功后,直接导入数据:

DELETEFROMuser;INSERTINTOuser(id, name, age, email)VALUES(1,'Jone',18,'[email protected]'),(2,'Jack',20,'[email protected]'),(3,'Tom',28,'[email protected]'),(4,'Sandy',21,'[email protected]'),(5,'Billie',24,'[email protected]');

这样子我们的测试表就建完啦


二、SpringBoo项目搭建

创建SpringBoot项目的过程可以看我的上一篇博客,这样就不讲啦
初始化SpringBoot项目后,需要在pom.xml里面添加依赖:
因为你是Boot项目,所有已经自带了Boot的依赖,我们只需导入Mybatis-Plus的依赖即可,这里我就复制了所有的,大家也可以检查一下是否缺少:

引入 Spring Boot Starter 父工程:

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.2</version><relativePath/><!-- lookup parent from repository --></parent>

引入MySQL驱动包、 spring-boot-starter、spring-boot-starter-test、mybatis-plus-boot-starter和lombok依赖:

<dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.23</version></dependency><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></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.24</version><scope>provided</scope></dependency></dependencies>

注意:尽量不要同时导入Mybatis和Mybatis-Plus! 可能会存在版本差异出问题


三、连接数据库

首先去

application.properties

这个文件配置数据库

MySQL5连接方式:

spring.datasource.username=root
spring.datasource.password=111111
spring.datasource.url=jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=utf-8
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

MySQL8连接方式(需要增加时区配置):

spring.datasource.username=root
spring.datasource.password=111111
spring.datasource.url=jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

注意:高版本兼容低版本


四、完成Java代码

我们知道MyBatis可以实现自动映射,所以我们要创一个实体类:

@Data@AllArgsConstructor@NoArgsConstructorpublicclass user {privateLong id;privateString name;privateInteger age;privateString email;}

注解解释:

  • @Data:自动生成Getter,Setter,equals,canEqual,hasCode,toString等方法
  • @AllArgsConstructor:自动添加一个构造函数,该构造函数含有所有已声明字段属性参数
  • @NoArgsConstructor:自动创建一个无参构造函数

接着去创建一个Mapper接口,继承BaseMapper,传入泛型即可:

@Repository//代表持久层publicinterfaceUserMapperextendsBaseMapper<user>{}

没错,就是这一行代码哈哈哈,大家可以点进BaseMapper查看

然后在启动类上添加扫描@MapperScan:

@MapperScan("com.example.mp_Test.mapper")@SpringBootApplicationpublicclassMpTestApplication{publicstaticvoidmain(String[] args){SpringApplication.run(MpTestApplication.class, args);}}

然后用测试类去测试是否有效:

@SpringBootTestclassMpTestApplicationTests{//继承了BaseMapper,所以所有方法都来自父类,但自己也可以写自己需要的方法@AutowiredprivateUserMapper userMapper;@TestvoidcontextLoads(){List<user> users = userMapper.selectList(null);
        users.forEach(System.out::println);}}

我们可以在控制台看到数据库的表内容已经全部被输出:
在这里插入图片描述
到这里大家是不是觉得这也太方便了吧,是的,Mybatis-Plus就是这样,不用写XML,直接接口继承BaseMapper即可

注意:我们需要在主启动类上去扫描mapper包下的所有接口,使用@MapperScan注解


三、配置日志

通过上述的体验,确实发现比Mybatis更简单,但是发现SQL是不可见的,也就是我们不知道期间执行了什么样的SQL,所以我们需要通过日志去查看期间运行的SQL。

还是在

application.properties

文件里添加以下配置:

#日志配置
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

当然也可以使用Log4j日志,导入对应依赖即可

然后重新运行测试类:
在这里插入图片描述

四、其他的CRUD操作

插入操作:
上面完成了基本的查询,现在可以试试使用MyBatis-Plus的INSERT方法:
只需要在测试类下写法即可:

@TestpublicvoidInsert(){User user =newUser();
    user.setName("小王");
    user.setAge(20);
    user.setEmail("[email protected]");int result = userMapper.insert(user);System.out.println(result);System.out.println(user);}

注意:我们这里没有set对应的ID,但是我们运行后,发现id有值:
在这里插入图片描述
得出的结论是这个ID会自己生成,这就涉及到了主键生成策略,因为实体类里面的ID对应数据库表中的主键


更新操作:

@TestpublicvoidUpdate(){User user =newUser();//把上面插入信息的那条信息给更新
    user.setId(1558809291433979905L);
    user.setName("小陈");
    user.setAge(30);
    user.setEmail("[email protected]");int i = userMapper.updateById(user);//返回受影响行数System.out.println(i);}

测试OK,但是注意updateById的参数是一个对象!!!

还有一个DELETE操作就大家自己去试试吧~~~


五、主键生成策略

常见的主键生成策略有:

  1. 数据库自增ID
  2. UUID
  3. UUID变种(UUID to Int64)
  4. Redis生成ID
  5. Twitter的雪花算法

这里可以参考一篇博客:分布式系统唯一ID生成方案汇总

https://www.cnblogs.com/haoxinyue/p/5208136.html

什么是雪花算法?
snowflake是Twitter开源的分布式ID生成算法,结果是一个long型的ID。其核心思想是:使用41bit作为毫秒数,10bit作为机器的ID(5个bit是数据中心,5个bit的机器ID),12bit作为毫秒内的流水号(意味着每个节点在每毫秒可以产生 4096 个 ID),最后还有一个符号位,永远是0。

特点:保证全球唯一


好啦 这篇文章就到这里,有时间继续写后面的内容,Bye~~

在这里插入图片描述


本文转载自: https://blog.csdn.net/m0_57310550/article/details/126335116
版权归原作者 热爱飞行的小应学长 所有, 如有侵权,请联系我们删除。

“Java真的不难(四十七)Mybatis-Plus的入门及应用”的评论:

还没有评论