第七章 MyBatis-Plus
MyBatis-Plus 高级用法:最优化持久层开发
一、MyBatis-Plus 快速入门
1. 简介
版本:3.5.3.1 MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window) 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
1.1 特性
无侵入 :只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑损耗小 :启动即会自动注入基本 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.2 支持数据库
MySQL,Oracle,DB2,H2,HSQL,SQLite,PostgreSQL,SQLServer,Phoenix,Gauss ,ClickHouse,Sybase,OceanBase,Firebird,Cubrid,Goldilocks,csiidb,informix,TDengine,redshift 达梦数据库,虚谷数据库,人大金仓数据库,南大通用(华库)数据库,南大通用数据库,神通数据库,瀚高数据库,优炫数据库
1.3 mybatis-plus 总结
自动生成单表的 CRUD 功能 提供丰富的条件拼接方式 全自动 ORM 类型持久层框架
2. 快速入门
2.1 准备数据库脚本
id name age email 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
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 , '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.2 准备 boot 工程
2.3 导入依赖
<?xml version="1.0" encoding="UTF-8"?>
< project xmlns = " http://maven.apache.org/POM/4.0.0" xmlns: xsi= " http://www.w3.org/2001/XMLSchema-instance" xsi: schemaLocation= " http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" > < modelVersion> 4.0.0</ modelVersion> < parent> < groupId> org.springframework.boot</ groupId> < artifactId> spring-boot-starter-parent</ artifactId> < version> 3.0.5</ version> </ parent> < groupId> com.alex</ groupId> < artifactId> springboot-starter-mybatis-plus-06</ artifactId> < version> 1.0-SNAPSHOT</ version> < properties> < maven.compiler.source> 17</ maven.compiler.source> < maven.compiler.target> 17</ maven.compiler.target> < project.build.sourceEncoding> UTF-8</ project.build.sourceEncoding> </ properties> < 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> </ dependency> < dependency> < groupId> com.baomidou</ groupId> < artifactId> mybatis-plus-boot-starter</ artifactId> < version> 3.5.3.1</ version> </ dependency> < dependency> < groupId> org.springframework.boot</ groupId> < artifactId> spring-boot-starter-jdbc</ artifactId> </ dependency> < dependency> < groupId> com.alibaba</ groupId> < artifactId> druid-spring-boot-3-starter</ artifactId> < version> 1.2.18</ version> </ dependency> < dependency> < groupId> mysql</ groupId> < artifactId> mysql-connector-java</ artifactId> < version> 8.0.28</ version> </ dependency> < dependency> < groupId> org.projectlombok</ groupId> < artifactId> lombok</ artifactId> < version> 1.18.28</ version> </ dependency> </ dependencies> < build> < plugins> < plugin> < groupId> org.springframework.boot</ groupId> < artifactId> spring-boot-maven-plugin</ artifactId> </ plugin> </ plugins> </ build>
</ project>
2.4 配置文件和启动类
完善连接池配置: 文件夹:META-INF.spring 文件名: org.springframework.boot.autoconfigure.AutoConfiguration.imports 内容:com.alibaba.druid.spring.boot3.autoconfigure.DruidDataSourceAutoConfigure
2.4.1 application.yaml
spring : datasource : type : com.alibaba.druid.pool.DruidDataSourcedruid : url : jdbc: mysql: ///day01username : rootpassword : rootdriver-class-name : com.mysql.cj.jdbc.Driver
2.4.2 启动类
@MapperScan ( "com.alex.mapper" )
@SpringBootApplication
public class MainApplication { public static void main ( String [ ] args) { SpringApplication . run ( MainApplication . class , args) ; } }
2.5 功能编码
编写实体类 User.java(此处使用了 Lombok 简化代码)
@Data
public class User { private Long id; private String name; private Integer age; private String email;
}
编写 Mapper 包下的 UserMapper 接口
public interface UserMapper extends BaseMapper < User > { }
继承 mybatis-plus 提供的基础 Mapper 接口,自带 crud 方法!
2.6 测试和使用
@SpringBootTest
public class SampleTest { @Autowired private UserMapper userMapper; @Test public void testSelect ( ) { System . out. println ( ( "----- selectAll method test ------" ) ) ; List < User > userList = userMapper. selectList ( null ) ; userList. forEach ( System . out:: println ) ; }
}
2.7 小结
通过以上几个简单的步骤,我们就实现了 User 表的 CRUD 功能,甚至连 XML 文件都不用编写! 从以上步骤中,我们可以看到集成MyBatis-Plus
非常的简单,只需要引入 starter 工程,并配置 mapper 扫描路径即可。