前言
MyBatis-Plus(简称MP)是在MyBatis的基础上进行增强和扩展的工具,目的是提供更便捷的CRUD操作和其他常用功能,MyBatis-Plus与MyBatis的一些区别和联系:
关系:
MyBatis-Plus是基于MyBatis的增强工具,可以看作是对MyBatis的功能扩展。
使用方式:
MyBatis是一个纯粹的SQL映射框架,需要手动书写SQL语句和Mapper接口,而MyBatis-Plus则封装了大部分常用的增删改查操作,避免了手动编写重复的代码。通过继承BaseMapper,就可以获得基本的CRUD方法。
功能扩展:
MyBatis-Plus在MyBatis的基础上提供了一系列增强功能,如自动生成代码、分页插件、逻辑删除、多租户支持、动态表名等。这些功能可以减少开发人员的工作量,提高开发效率。
数据库兼容性:
MyBatis虽然支持多种数据库,但在不同数据库之间可能存在一些语法差异。MyBatis-Plus会自动处理这些差异,并提供统一的API,使得开发者可以方便地切换不同的数据库。
社区活跃度:
MyBatis和MyBatis-Plus都有活跃的社区支持和维护,提供了官方文档、示例代码和解决方案。开发者可以根据自身需求来选择使用哪个框架。
MyBatis是一个灵活且强大的SQL映射框架,适用于需要更灵活控制SQL语句的场景;而MyBatis-Plus则提供了更加便捷的数据访问和常用功能,适用于快速开发和提高开发效率的需求。两者可以结合使用,根据具体情况选择使用MyBatis或MyBatis-Plus。
一、什么mybatisPlus
MyBatis-Plus(简称MP)是一个基于MyBatis的增强工具,它简化了与数据库的交互操作,并提供了一些额外的特性和功能,使得开发人员可以更高效地编写数据库访问层代码。
下面是MyBatis-Plus的主要特点和功能:
1. 简化CRUD操作:
MyBatis-Plus通过代码生成器和通用CRUD接口,自动生成数据表对应的实体类、Mapper接口和XML映射文件,并提供了一系列常用的CRUD方法,大幅度减少了编写和维护CRUD代码的工作量。
2. 条件构造器:
MyBatis-Plus提供了Lambda方式的条件构造器,可以通过链式调用的方式灵活构建查询条件,避免了手写SQL语句的繁琐和容易出错。
3. 分页插件:
MyBatis-Plus内置了分页插件,可以方便地进行分页查询操作,减轻了手动处理分页逻辑的负担。
4. 乐观锁支持:
MyBatis-Plus提供了乐观锁的支持,通过在实体类中添加版本字段,并在更新操作时自动校验版本号,确保数据一致性和并发安全。
5. 主键生成策略:
MyBatis-Plus支持多种主键生成策略,如自增主键、UUID、雪花算法等,可以根据具体需求选择合适的主键生成方式。
6. 逻辑删除支持:
MyBatis-Plus提供了逻辑删除的功能,可以通过配置实现软删除,避免了物理删除对数据的永久性影响。
7. 自动填充字段:
MyBatis-Plus支持自动填充字段,如创建时间、更新时间等,减少了手动设置这些字段的工作量。
8. 多租户支持:
MyBatis-Plus提供了多租户的支持,可以根据不同的租户ID自动过滤查询结果,并保证租户数据的隔离性和安全性。
二、mybatisplus的开发步骤
使用MyBatis-Plus进行开发的基本步骤:
1. 引入依赖:
在项目中引入MyBatis-Plus的相关依赖,可以通过Maven或Gradle进行管理。通常需要引入mybatis-plus-core和对应的数据库驱动依赖。
2. 创建数据库表:
根据业务需求,在数据库中创建相应的表结构。
3. 配置数据源:
在项目的配置文件中配置数据库连接信息,包括数据库驱动、URL、用户名和密码等。
4. 创建实体类:
根据数据库表的结构,创建对应的Java实体类。使用MyBatis-Plus提供的注解或继承父类来简化实体类的定义。
5. 创建Mapper接口:
使用MyBatis-Plus的方式,无需手动编写Mapper接口和SQL语句。直接继承BaseMapper接口,并进行相关的泛型配置即可。
6. 配置MapperScannerConfigurer:
在项目的配置文件中配置Mapper接口的扫描路径,使得MyBatis-Plus能够自动扫描并生成Mapper代理对象。
7. 编写Service层代码:
创建Service接口和实现类,定义业务逻辑。可以使用MyBatis-Plus提供的Service层抽象接口和实现类来简化操作。
8. 运行测试:
编写测试类,调用Service层代码进行数据操作,并检查结果是否符合预期。
Mybatis-Plus还提供了丰富的查询、更新、删除等操作方法,以及自动生成代码的功能,可以进一步简化开发过程。同时,建议参考MyBatis-Plus的官方文档,深入了解其更多的功能和用法。
三、快速开始
1.首先需要添加 MyBatis-Plus 依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.1.tmp</version>
</dependency>
完整性依赖文件
<?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.2.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.lyh.test</groupId>
<artifactId>test-mybatis-plus</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>test-mybatis-plus</name>
<description>测试 -- 测试 MyBatis-Plus 功能</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.1.tmp</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.18</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.10</version>
</dependency>
<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>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2.使用一个表
3.配置xxx.yml文件中配置 mysql 数据源信息
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: 123456
url: jdbc:mysql://localhost:3306/testMyBatisPlus?useUnicode=true&characterEncoding=utf8
4.编写表对应的 测试实体类
@Data
public class User {
private Long id;
private String name;
private int age;
private String email;
}
5.编写操作实体类的 Mapper 类。
直接继承 BaseMapper,这是 mybatis-plus 封装好的类。
import bean.User;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface UserMapper extends BaseMapper<User> {
}
6.主启动
@MapperScan("mapper")
@SpringBootApplication
public class TestMybatisPlusApplication {
public static void main(String[] args) {
SpringApplication.run(TestMybatisPlusApplication.class, args);
}
}
7.测试类
@SpringBootTest
class TestMybatisPlusApplicationTests {
@Autowired
private UserMapper userMapper;
@Test
public void testSelect() {
System.out.println(("----- selectAll method test ------"));
List<User> userList = userMapper.selectList(null);
for(User user:userList) {
System.out.println(user);
}
}
}
ok,大概就是这个样子了,详细的过程需要我们去看官方的文档