一,简介
MyBatis-Plus(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。(简单来说就是MyBatis的增强版插件)
二,特性
主要是省略大量的SQL语句;快速生成各层代码;一次配置,终身受益。
三,框架结构
四,通常用法
第一种:MyBatis+MP 第二种:Spring+MyBatis+MP 第三种:SpringBoot+MyBatis+MP
Spring和SpringBoot仅仅只是在创建项目工程时存在差异,MyBatis的用法中并无太大区别,请放心食用
五,新手案例
5.1 创建数据库以及表格
--创建表
CREATE DATABASE `mybatis_plus` /*!40100 DEFAULT CHARACTER SET utf8mb4 */;
use `mybatis_plus`;
CREATE TABLE `user` (
`id` bigint(20) NOT NULL COMMENT '主键ID',
`name` varchar(30) DEFAULT NULL COMMENT '姓名',
`age` int(11) DEFAULT NULL COMMENT '年龄',
`email` varchar(50) DEFAULT NULL COMMENT '邮箱',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--添加数据
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');
在查询中可直接输入该代码自动生成数据库和表格,无需自建数据库名称
5.2 创建maven工程
本案例使用2022版IDE,旧版IDE与2022版创建文件存在差异,如有不同,请自行百度创建
由于MyBatis-Plus本身增强工具的特性,我们只需要将打包方式设置为jar,不需要tomcat的支持
<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>
</dependencies>
在自动生成的pom文件中,存在俩个依赖为自身SpringBoot的启动器(还需要 MyBatis-Plus+lombok+mysql的依赖)
在pom.xml文件中导入相关依赖(手动添加在<dependencies>之间),点击右上角的M图标刷新下载
<?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 https://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>2.7.5</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com</groupId>
<artifactId>mp</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>mp</name>
<description>mp</description>
<properties>
<java.version>1.8</java.version>
</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>
<scope>test</scope>
</dependency>
<!-- mybatis-plus启动器 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
<!-- lombok用于简化实体类 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!-- mysql驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
注意:
其中,简化bean的工具包(lombok),由于低版本IDE没有捆绑该插件,需要额外去插件库下载,否则会报错。教程连接:https://blog.csdn.net/CYBwave/article/details/127871878?spm=1001.2014.3001.5501
依赖不可以随便添加,依赖和依赖之间的版本必须兼容,所以我们不能随便引入其他版本的依赖,以免发生冲突。同时,MyBatis-Plus依赖包含MyBatis,Spring整合MyBatis的依赖。当我们引入了 MyBatis-Plus的依赖时,间接的引入MyBatis以及Spring整合MyBatis的依赖。
5.3 编写代码
yml
在resources文件夹下的 application.yml(application.properties修改后缀)
username和password中填入你们自己数据库的信息
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: 123456
spring必须顶格写,yml格式较为严格。
pojo(实体类)
(通过lombok插件添加注解代替原本繁杂的get,set等方法的生成。“部分公司禁止使用lombok”)
mapper
创建mapper类,继承BaseMapper<User>
BaseMapper是MyBatis-Plus提供的模板mapper,其中包含了基本的CRUD方法,泛型为操作的实体类型
启动类
在启动类Application上添加mapper包的扫描接口
测试
@SpringBootTest
public class MybatisPlusTest {
@Autowired
private UserMapper userMapper;
@Test
public void testSelectList(){
//selectList()根据MP内置的条件构造器查询一个list集合,null表示没有条件,即查询所有
userMapper.selectList(null).forEach(System.out::println);
}
}
结果: