MyBatis Plus详细教程

目录

一、什么是MybatisPlus

二、快速入门

2.1、创建数据库mybatis_plus

2.2、创建user表

2.3、插入数据

2.4、初始化项目

2.5、添加依赖

2.6、配置(连接数据库)

2.7、编码

2.8、开始使用

2.9、小结

三、配置日志

?

四、CRUD

4.1、插入测试

4.2、自定义ID生成器

4.2.1、UUID

4.2.2、SnowFlake(雪花算法)

4.3、更新操作

五、自动填充

5.1、什么是自动填充

5.2、自动填充方式

六、乐观锁和悲观锁

6.1、什么是乐观锁

6.2、什么是悲观锁

6.3、配置乐观锁

6.3.1、数据库中添加version字段

6.3.2、同步实体类

6.3.3、配置插件

6.3.4、测试乐观锁

七、增删改查

7.1、查询操作

7.2、分页查询

7.3、删除操作

7.4、逻辑删除

八、执行SQL分析打印

8.1、p6spy依赖引入

8.2、application.yml配置

8.3、spy.properties配置

8.4、测试

九、条件构造器

9.1、代码演示

十、代码自动生成器

10.1、EasyCode

10.2、功能

10.3、操作


一、什么是MybatisPlus

为什么要学MybatisPlus?

MybatisPlus可以节省大量时间,所有的CRUD代码都可以自动化完成

MyBatis-Plus是一个MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

特性:

  • 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑

  • 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作

  • 强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求

  • 支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错

  • 支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题

  • 支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作

  • 支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere )

  • 内置代码生成器:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,支持模板引擎,更有超多自定义配置等您来使用

  • 内置分页插件:基于 MyBatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通 List 查询

  • 分页插件支持多种数据库:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多种数据库

  • 内置性能分析插件:可输出 SQL 语句以及其执行时间,建议开发测试时启用该功能,能快速揪出慢查询

  • 内置全局拦截插件:提供全表 delete 、 update 操作智能分析阻断,也可自定义拦截规则,预防误操作

二、快速入门

2.1、创建数据库mybatis_plus

2.2、创建user表

DROP TABLE IF EXISTS 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)
);

2.3、插入数据

DELETE FROM user;
?
INSERT INTO user (id, name, age, email) VALUES
(1, 'Jone', 18, 'test1@baomidou.com'),
(2, 'Jack', 20, 'test2@baomidou.com'),
(3, 'Tom', 28, 'test3@baomidou.com'),
(4, 'Sandy', 21, 'test4@baomidou.com'),
(5, 'Billie', 24, 'test5@baomidou.com');

2.4、初始化项目

快速初始化一个空的spring boot 项目

2.5、添加依赖

引用spring boot starter 父工程

<parent>
 ? ?<groupId>org.springframework.boot</groupId>
 ? ?<artifactId>spring-boot-starter-parent</artifactId>
 ? ?<version>2.6.5</version>
 ? ?<relativePath/>
</parent>

引入spring-boot-starter、spring-boot-starter-test、mybatis-plus-boot-starter、h2依赖:

<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>
 ? ?</dependency>
 ? ?<dependency>
 ? ? ? ?<groupId>com.baomidou</groupId>
 ? ? ? ?<artifactId>mybatis-plus-boot-starter</artifactId>
 ? ? ? ?<version>3.5.1</version>
 ? ?</dependency>
 ? ?<dependency>
 ? ? ? ?<groupId>mysql</groupId>
 ? ? ? ?<artifactId>mysql-connector-java</artifactId>
 ? ?</dependency>
</dependencies>

注意:尽量不要同时导入mybatis和mybatis_plus,版本差异

2.6、配置(连接数据库)

在application.yml配置文件中添加MySQL数据库的相关配置:

# DataSource Config
spring:
  datasource:
 ?  username: root
 ?  password: 123456
 ?  url: jdbc:mysql:///mybatis_plus?userUnicode=true&characterEncoding=utf-8
 ?  driver-class-name: com.mysql.cj.jdbc.Driver

在spring boot启动类中添加@MapperScan注解,扫描Mapper文件夹:

@SpringBootApplication
@MapperScan("com.wen.mybatis_plus.mapper") ?//扫描mapper
public class MybatisPlusApplication {
?
 ? ?public static void main(String[] args) {
 ? ? ? ?SpringApplication.run(MybatisPlusApplication.class, args);
 ?  }
?
}

2.7、编码

编写实体类User.java(此处使用Lombok简化代码)

import lombok.Data;
?
@Data
public class User {
 ? ?private Long id;
 ? ?private String name;
 ? ?private Integer age;
 ? ?private String email;
}
<
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值