Mybatis-Plus

Mybatis-Plus基本介绍

Mybatis-Plus 是一个增强版的Mybatis,用于简化开发工作。它提供了很多方便的功能,如自动生成代码、自动分页等,从而极大地提高了开发效率。Mybatis-Plus实现了ActiveRecord支持、代码生成器、自定义全局通用操作等。

在Mybatis-Plus中,可以在Mapper接口中定义Mybatis-Plus提供的方法,同时还可以定义自己的复杂查询。这是因为Mybatis-Plus只是对Mybatis进行了扩展,不替代它的核心功能。

具体来说:

  1. Mybatis-Plus的方法 :当Mapper接口继承了BaseMapper<T>时,将获得大量的CRUD方法,而无需写任何较为复杂的实现代码。

    java 复制代码
    public interface UserMapper extends BaseMapper<User> {
        // 这里已经有了很多由Mybatis-Plus提供的CRUD方法
    }
  2. 自定义复杂查询:在相同的Mapper接口中,可以定义自己的方法,并在对应的XML文件中为这些方法提供SQL语句或Mybatis查询逻辑。

    java 复制代码
    public interface UserMapper extends BaseMapper<User> {
        // Mybatis-Plus的CRUD方法已经包含在这里
    
        // 自定义方法
        @Select("YOUR_COMPLEX_SQL_HERE")
        List<User> myComplexQueryMethod(@Param("param") SomeType param);
    }

    在对应的XML文件中,可以为myComplexQueryMethod提供相应的查询逻辑。

Mybatis-Plus允许我们混合使用其提供的便捷方法和自定义的复杂查询,给予在简单和复杂查询之间进行选择的灵活性。


SpringDataJPA与Mybatis-plus

Spring Data JPA 和 MyBatis-Plus 是两种流行的持久层框架,它们都可以用来简化数据库操作,但它们在设计理念和使用方式上有显著的不同。

Spring Data JPA

  1. 抽象层次: 基于JPA(Java Persistence API),提供了一套对象关系映射(ORM)的标准。
  2. 查询方式: 支持方法名查询、@Query注解查询,以及Criteria API。
  3. 自动化: 有很高的自动化程度,可以自动生成SQL语句。
  4. 集成: 与Spring框架的集成度非常高,可以无缝整合Spring的其他项目。
  5. 对象映射: 强调面向对象的数据库操作,对数据库的操作更倾向于通过操作对象来实现。
  6. 性能: 对于复杂查询,可能需要手写SQL或使用Criteria API来优化。

MyBatis-Plus

  1. 抽象层次: 是MyBatis的增强工具,MyBatis 是一个半自动化的ORM框架。
  2. 查询方式: 提供了基于XML的动态SQL以及注解方式,并且有强大的条件构造器。
  3. 自动化: 提供了代码生成器,能够生成entity、mapper、service等类和XML文件。
  4. 集成: 虽然可以与Spring框架集成,但整合程度略逊于Spring Data JPA。
  5. 对象映射: 支持面向对象的操作,但用户需要自己编写大部分的SQL,提供了更细粒度的控制。
  6. 性能: 对于复杂查询,由于可以直接控制SQL,通常能够更容易地进行性能优化。

为什么现在企业很多使用Spring Data JPA?

  1. 标准化: JPA是一种规范,它让Java开发人员可以以几乎相同的方式与数据库交互,不论实际的实现是Hibernate还是其他JPA实现。
  2. 简化开发: Spring Data JPA极大地简化了数据访问层(Repository/DAO层)的开发工作。
  3. 整合简单: 它与Spring框架的其他部分集成得很好,如Spring Security和Spring Transaction Management。
  4. 自动化操作: Spring Data JPA支持自动生成基于方法命名规则的查询,减少了编码工作量。
  5. 提高效率: 在许多常见场景中,Spring Data JPA可以显著提高开发效率,开发者无需编写和维护SQL语句。
  6. 技术栈一致性: 许多企业倾向于使用Spring全家桶,使用Spring Data JPA可以保持技术栈的一致性。

尽管Spring Data JPA有很多优点,但选择哪个框架还是要根据项目需求、团队的熟悉度和偏好来决定。例如,如果项目需要高度优化的SQL或者复杂的数据库操作,MyBatis或MyBatis-Plus可能是更好的选择


为什么说Mybatis-plus是半自动化ORM?

MyBatis-Plus 被称为半自动化ORM(Object-Relational Mapping,对象关系映射)框架,这是因为它在自动化和手动操作之间提供了平衡,让开发者可以根据需要选择自动或者控制SQL的细节程度。

以下是一些使得MyBatis-Plus具备半自动化特点的原因:

  1. SQL控制

    • 自动化程度:MyBatis-Plus可以自动生成CRUD(Create, Read, Update, Delete)操作的SQL,但仍然需要开发者手动编写复杂查询的SQL。
    • 手动编写SQL:对于不规则的SQL查询或复杂的业务逻辑,开发者需要编写自定义SQL语句,这提供了更多的控制能力和灵活性。
  2. 对象映射

    • 自动化程度:MyBatis-Plus可以自动处理结果集到Java对象的映射。
    • 配置映射:开发者在XML文件中或使用注解来定义SQL语句和结果映射,这样可以精确控制每个字段如何映射。
  3. 动态SQL

    • 提供XML和注解两种方式编写动态SQL,虽然有助于SQL的重用和组织,但它们的编写和维护仍然需要开发者手动完成。
  4. 代码生成

    • MyBatis-Plus提供了代码生成器,可以生成实体类、映射文件、Mapper接口等基础代码,这降低了重复代码的编写工作量。
    • 生成的代码通常需要根据实际业务需求进行调整和扩展。
  5. 插件扩展

    • 提供了多个内置插件,如分页插件、性能分析插件等,来增强框架的功能。
    • 开发者可以根据需要自定义插件,以增强或修改框架的行为。

相比之下,全自动化的ORM框架(如Hibernate,是Spring Data JPA的默认实现)通常会更多地隐藏SQL层的细节,允许开发者几乎完全通过对象和类的方法来进行数据库操作,而无需编写具体的SQL语句。

因此,MyBatis-Plus的半自动化特性给了开发者更多的灵活性,同时也需要他们更多地关注SQL层面的操作,这使得它在需要精细优化SQL性能或对SQL控制需求更高的场景中非常有用。

相关推荐
小灰灰__16 分钟前
IDEA加载通义灵码插件及使用指南
java·ide·intellij-idea
夜雨翦春韭19 分钟前
Java中的动态代理
java·开发语言·aop·动态代理
程序媛小果40 分钟前
基于java+SpringBoot+Vue的宠物咖啡馆平台设计与实现
java·vue.js·spring boot
追风林1 小时前
mac m1 docker本地部署canal 监听mysql的binglog日志
java·docker·mac
芒果披萨1 小时前
El表达式和JSTL
java·el
duration~2 小时前
Maven随笔
java·maven
zmgst2 小时前
canal1.1.7使用canal-adapter进行mysql同步数据
java·数据库·mysql
跃ZHD2 小时前
前后端分离,Jackson,Long精度丢失
java
blammmp2 小时前
Java:数据结构-枚举
java·开发语言·数据结构
暗黑起源喵3 小时前
设计模式-工厂设计模式
java·开发语言·设计模式