目录:
(1)MyBatis-Plus入门案例
(2)MyBatis-Plus-添加和主键生成策略
(1)MyBatis-Plus入门案例
简介:
MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
润物无声
只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑。
效率至上
只需简单配置,即可快速进行 CRUD 操作,从而节省大量时间。
丰富功能
热加载、代码生成、分页、性能分析等功能一应俱全。
MyBatis案例:

首先创建表:

 创建springboot项目:
springboot用2.1.1版本:
 
修改版本:
 
 
在pom中引入依赖MyBatis-Plus的相关依赖:
<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-->
<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>mybatis-plus-boot-starter</artifactId>
  <version>3.3.1</version>
</dependency>
<!--mysql依赖-->
<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
</dependency>
<!--lombok用来简化实体类-->
<dependency>
  <groupId>org.projectlombok</groupId>
  <artifactId>lombok</artifactId>
  <optional>true</optional>
  </dependency>
</dependencies>
 
配置文件的配置:
在 application.properties 配置文件中添加 MySQL 数据库的相关配置:
spring boot 2.0(内置jdbc5驱动)
 #mysql数据库连接 spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/mybatis_plus?characterEncoding=utf-8&useSSL=false spring.datasource.username=root spring.datasource.password=root  | 
spring boot 2.1及以上(内置jdbc8驱动)
注意:driver和url的变化
 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/mybatis_plus?serverTimezone=GMT%2B8 spring.datasource.username=root spring.datasource.password=root  | 
注意:
1、这里的 url 使用了 ?serverTimezone=GMT%2B8 后缀,因为8.0版本的jdbc驱动需要添加这个后缀,否则运行测试用例报告如下错误:
java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more
2、这里的 driver-class-name 使用了 com.mysql.cj.jdbc.Driver ,在 jdbc 8 中 建议使用这个驱动,否则运行测试用例的时候会有 WARN 信息
 
创建包 entity 编写实体类 User.java(此处使用了 Lombok 简化代码)@Data会帮助我们生成get set方法
|   @Data  | 

 
创建包 mapper 编写Mapper 接口: UserMapper.java
|   @Repository  | 
 
BaseMapper:封装了对数据库基本的增删改查:



在 Spring Boot 启动类中添加 @MapperScan 注解,扫描 Mapper 文件夹
|   @SpringBootApplication  | 
测试类:

运行test
 
(2)MyBatis-Plus-添加和主键生成策略
可以配置sql的日志:
在配置文件中配置:
|   #mybatis日志 mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl  | 
 
添加操作:
 
发现我们没有设置id,数据库的表也没有设置自动增长,但是它自动加了id,它是MyBatisPlus帮助我们生成的id 值
 
MyBatis-Plus默认的主键策略是:ASSIGN_ID (使用了雪花算法)
 @TableId(type = IdType.ASSIGN_ID) private String id;  | 
雪花算法:分布式ID生成器
雪花算法是由Twitter公布的分布式主键生成算法,它能够保证不同表的主键的不重复性,以及相同表的主键的有序性。
核心思想:
长度共64bit(一个long型)。
首先是一个符号位,1bit标识,由于long基本类型在Java中是带符号的,最高位是符号位,正数是0,负数是1,所以id一般是正数,最高位是0。
41bit时间截(毫秒级),存储的是时间截的差值(当前时间截 - 开始时间截),结果约等于69.73年。
10bit作为机器的ID(5个bit是数据中心,5个bit的机器ID,可以部署在1024个节点)。
12bit作为毫秒内的流水号(意味着每个节点在每毫秒可以产生 4096 个 ID)。

优点:整体上按照时间自增排序,并且整个分布式系统内不会产生ID碰撞,并且效率较高。
可以通过注解设置主键策略:不写默认是ASSIGN_ID

需要在创建数据表的时候设置主键自增
实体字段中配置 @TableId(type = IdType.AUTO)
 @TableId(type = IdType.AUTO) private Long id;  | 
要想影响所有实体的配置,可以在配置文件中设置全局主键配置
 #全局设置主键生成策略 mybatis-plus.global-config.db-config.id-type=auto  | 













![[附源码]计算机毕业设计基于微信小程序的网络办公系统Springboot程序](https://img-blog.csdnimg.cn/439d6a91c09f4bf08d13951ff3a7f12f.png)





