关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

Java之路—— 一文带你走进MybatisPlus

发布时间:2023-06-27 17:00:51

前言


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 依赖

 com.baomidou mybatis-plus-boot-starter 3.3.1.tmp

   


完整性依赖文件

 <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">  4.0.0  org.springframework.boot spring-boot-starter-parent 2.2.6.RELEASE    com.lyh.test test-mybatis-plus 0.0.1-SNAPSHOT test-mybatis-plus 测试 -- 测试 MyBatis-Plus 功能   1.8     com.baomidou mybatis-plus-boot-starter 3.3.1.tmp   mysql mysql-connector-java 8.0.18   org.projectlombok lombok 1.18.10    org.springframework.boot spring-boot-starter    org.springframework.boot spring-boot-starter-test test   org.junit.vintage junit-vintage-engine       org.springframework.boot spring-boot-maven-plugin

   


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{ }

   


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 ------"));  ListuserList = userMapper.selectList(null);  for(User user:userList) {  System.out.println(user);  }  } }

   


ok,大概就是这个样子了,详细的过程需要我们去看官方的文档


/template/Home/leiyu/PC/Static