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控制需求更高的场景中非常有用。

相关推荐
码兄科技1 天前
Java AI智能体开发实战:从零构建智能对话系统指南
java·开发语言·人工智能
折哥的程序人生 · 物流技术专研1 天前
第8篇:六大设计原则在工厂模式中的体现
java·设计模式·设计原则·工厂模式·编程进阶·扩充系列
小明bishe181 天前
计算机毕业设计之基于JAVA的植物科普网站
java·spring boot·spring·架构·课程设计
r_oo_ki_e_1 天前
Java Map 集合学习笔记
java·笔记·学习
SL-staff1 天前
智慧园区2000+设备统一管理:JVS-IoT如何降低运维成本40%
java·开发语言·物联网·智慧园区·设备管理·运维优化·jvs-iot
咖啡八杯1 天前
GoF设计模式——模板方法模式
java·后端·spring·设计模式
爱笑的源码基地1 天前
一款全开源的信创云PACS影像云平台解决方案,支持多模态医学影像处理(CT/MR/DR/超声/病理等)
java·源码·国产化·pacs·云影像·区域pacs
我命由我123451 天前
Android 开发问题:ClickableSpan 的点击事件没有生效
java·java-ee·android studio·android jetpack·android-studio·android runtime
万亿少女的梦1681 天前
基于Python的高考志愿填报辅助系统设计与实现
java·spring boot·python·mysql·vue
微信开发api-视频号协议1 天前
企业微信外部群开发自动化实践过程
java·前端·微信·自动化·企业微信·ipad