前言
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,大概就是这个样子了,详细的过程需要我们去看官方的文档