文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Mybatis-Plus详解

2023-09-01 16:10

关注

目录

1. Mybatis-Plus概念

1.1 Mybatis-Plus介绍

1.2 特性

1.3 架构

2. Mybatis-Plus快速⼊⻔

2.1 安装

2.2 创建数据库以及表

2.3 创建⼯程

2.4 Mybatis + MP

2.5 Spring + Mybatis + MP

2.6 SpringBoot + Mybatis + MP

3. 通⽤CRUD

3.1 插⼊操作

3.2 更新操作

3.3 删除操作

3.4 查询操作

3.5 SQL注⼊的原理

4. 配置

4.1、基本配置

4.1.1、configLocation

4.1.2、mapperLocations

4.1.3、typeAliasesPackage

4.2、进阶配置

4.2.1、mapUnderscoreToCamelCase

4.2.2、cacheEnabled

4.3、DB(数据库) 策略配置

4.3.1、idType

4.3.2、tablePrefix

5. 条件构造器

5.1、allEq

5.2、基本⽐较操作

5.3、模糊查询

5.4、排序

5.5、逻辑查询

5.6、select

6. ActiveRecord

6.1、开启AR之旅

6.2、根据主键查询

6.3、新增数据 

6.4、更新操作

6.5、删除操作

6.6、根据条件查询

7. 插件

7.1、mybatis的插件机制

7.2、执⾏分析插件

7.3、性能分析插件

7.4、乐观锁插件

8. Sql 注⼊器

9. ⾃动填充功能

10. 逻辑删除

11. 代码⽣成器

 12. MybatisX 快速开发插件


1. Mybatis-Plus概念

1.1 Mybatis-Plus介绍

官⽹:https://mp.baomidou.com/
MyBatis-Plus(简称 MP)是⼀个 MyBatis 的增强⼯具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提
⾼效率⽽⽣。

1.2 特性

  • ⽆侵⼊:只做增强不做改变,引⼊它不会对现有⼯程产⽣影响,如丝般顺滑。
  • 损耗⼩:启动即会⾃动注⼊基本 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 操作智能分析阻断,也可⾃定义拦截规则,预防误操作。

1.3 架构


2. Mybatis-Plus快速⼊⻔

2.1 安装

全新的 MyBatis-Plus 3.0 版本基于 JDK8,提供了 lambda 形式的调⽤,所以安装集成 MP3.0 要求如下:

Spring Boot(Spring Boot工程中集成Mybatis-Plus
Maven:

   com.baomidou   mybatis-plus-boot-starter   3.4.0

Spring MVC(普通Maven工程集成Mybatis-Plus)
Maven:

   com.baomidou   mybatis-plus   3.4.0

对于Mybatis整合MP有常常有三种⽤法,分别是Mybatis+MP、Spring+Mybatis+MP、SpringBoot+Mybatis+MP。

2.2 创建数据库以及表

-- 创建测试表DROP TABLE IF EXISTS tb_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, '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.3 创建⼯程

创建一个Maven工程 com.zm.mp
导⼊依赖:

                             com.baomidou            mybatis-plus            3.1.1                                    mysql            mysql-connector-java            5.1.47                                    com.alibaba            druid            1.0.11                                    org.projectlombok            lombok            1.18.4                            junit            junit            4.12                            org.slf4j            slf4j-log4j12            1.6.4                                                    org.apache.maven.plugins                maven-compiler-plugin                                    1.8                    1.8                                        

2.4 Mybatis + MP

下⾯演示,通过纯Mybatis与Mybatis-Plus整合。

创建⼦Module: zm-mybatis-plus-simple

                            zm-mybatis-plus            com.zm.mp            1.0-SNAPSHOT                4.0.0        zm-mybatis-plus-simple    

引入log4j.properties:

log4j.rootLogger=DEBUG,A1log4j.appender.A1=org.apache.log4j.ConsoleAppenderlog4j.appender.A1.layout=org.apache.log4j.PatternLayoutlog4j.appender.A1.layout.ConversionPattern=[%t] [%c]-[%p] %m%n

Mybatis实现查询User

第⼀步,编写sqlMapConfig.xml⽂件:

                                                                                                                                                                                                                                                                             

第⼆步,编写User实体对象:(这⾥使⽤lombok进⾏了进化bean操作)

@Data // getter setter @toString@NoArgsConstructor@AllArgsConstructorpublic class User {      private Long id;      private String name;      private Integer age;      private String email; }

第三步,编写UserMapper接⼝:

public interface UserMapper {  List findAll();}

第四步,编写UserMapper.xml⽂件: