> 文档中心 > Mybatis-Plus 学习笔记

Mybatis-Plus 学习笔记

Mybatis-Plus

  • 前言
  • 一、MyBatis-Plus简介
    • 1、简介
    • 2、特性
    • 3、框架结构
  • 二、快速开始
    • 1、建库建表
    • 2、创建Spring Boot工程
    • 3、编写代码

前言

MyBatis-Plus提供了通用的mapper和service,可以在不编写任何SQL语句的情况下,快速的实现对单表的CRUD、批量、逻辑删除、分页操作
官网:https://baomidou.com/pages/24112f/#%E7%89%B9%E6%80%A7

一、MyBatis-Plus简介

1、简介

MyBatis-Plus (简称 MP) 是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。我们的愿景是成为MyBatis 最好的搭档,就像魂斗罗中的 1P、2P,基友搭配,效率翻倍。
在这里插入图片描述

2、特性

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

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

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

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

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

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

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

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

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

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

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

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

3、框架结构

在这里插入图片描述

二、快速开始

通过一个简单的 Demo 来阐述 MyBatis-Plus 的强大功能。我们假设您已经:拥有 Java 开发环境以及相应 IDE,熟悉 Spring Boot,熟悉Maven。

1、建库建表

CREATE DATABASE `mybatis_plus`; use `mybatis_plus`;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));
INSERT INTO user (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]');

2、创建Spring Boot工程

使用 Spring Initializr 快速初始化一个 Spring Boot 工程
在这里插入图片描述
在这里插入图片描述
引入依赖

 <dependency>   <groupId>com.baomidou</groupId>   <artifactId>mybatis-plus-boot-starter</artifactId>   <version>3.5.1</version></dependency><dependency>   <groupId>org.projectlombok</groupId>   <artifactId>lombok</artifactId>   <optional>true</optional></dependency><dependency>   <groupId>mysql</groupId>   <artifactId>mysql-connector-java</artifactId>   <scope>runtime</scope></dependency><dependency>   <groupId>com.baomidou</groupId>   <artifactId>mybatis-plus-generator</artifactId>   <version>3.5.1</version></dependency>

idea中安装lombok插件

3、编写代码

配置application.yml

spring:  datasource:    type: com.zaxxer.hikari.HikariDataSource    driver-class-name: com.mysql.cj.jdbc.Driver    url: jdbc:mysql://localhost:3306/mybatis_plus?characterEncoding=utf-8&userSSL=false    username: root    password: root# 输出日志 mybatis-plus:  configuration:    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

Spring Boot启动类中添加@MapperScan注解,扫描mapper包

@SpringBootApplication@MapperScan("com.atguigu.mybatisplus.mapper")public class MybatisplusApplication {    public static void main(String[] args) { SpringApplication.run(MybatisplusApplication.class, args);    }}

编写实体类

/** * Author:huang.bx * Date:2022/3/12 */@Datapublic class User {    @TableId(value = "id", type = IdType.AUTO)    private Long id;    private String name;    private Integer age;    private String email;}

编写 mapper
BaseMapper是MyBatis-Plus提供的模板mapper,其中包含了基本的CRUD方法,泛型为操作的实体类型。

@Repositorypublic interface UserMapper extends BaseMapper<User> {}

测试

/** * Author:huang.bx * Date:2022/3/12 */@SpringBootTestpublic class MyBatisPlusTest {    @Autowired    private UserMapper userMapper;    @Test    public void testSelectList(){ //通过条件构造器查询一个list集合,若没有条件,则可以设置null为参数 List<User> list = userMapper.selectList(null); list.forEach(System.out::println);    }}

测试结果
Mybatis-Plus 学习笔记