当前位置:   article > 正文

MyBatis Plus 和 MyBatis 的区别?选哪一个框架更好?_mybatis与mybatis-plus的区别及plus的优点

mybatis与mybatis-plus的区别及plus的优点

        一、MyBatis Plus 的优点

        MyBatis Plus 和 MyBatis 都是用于 Java 的持久层框架,它们都用于处理数据库操作,但是两者之间存在一些关键的区别,主要体现在以下几个方面:

        1.功能增强

    MyBatis Plus 提供了更多的内置功能,比如通用 CRUD 操作、代码生成器、分页查询、条件构造器、Lambda 表达式查询等,这些功能在 MyBatis 中需要手动编写 SQL 或者使用 XML 映射文件来实现。

        2.代码生成器

        MyBatis Plus 包含了一个强大的代码生成器,可以根据数据库表结构自动生成实体类、Mapper 接口、Service 接口、Controller 类以及相应的实现类,这大大加快了开发速度。

        3.通用 Mapper

        MyBatis Plus 提供了一个基类 'BaseMapper',继承该基类可以自动获得一系列常用的 CRUD 方法,而不需要在每个 Mapper 接口中重复声明这些方法。

        4.自动配置

        MyBatis Plus 在 Spring Boot 环境下提供了自动配置支持,使得集成变得非常简单,而 MyBatis 需要手动配置更多的内容。

        5.简化开发

        MyBatis Plus 的设计目的是为了简化开发,它通过提供一系列的快捷方法和工具,减少了开发者在日常开发中编写重复代码的工作量。

        6.控制权与灵活性

        MyBatis 允许开发者完全控制 SQL 语句的编写,适用于那些需要高度定制化查询的情况。而 MyBatis Plus 虽然提供了便利,但在某些特定场景下可能不如 MyBatis 灵活。

        7.学习曲线

        如果你已经熟悉 MyBatis,那么过渡到 MyBatis Plus 相对容易,因为 MyBatis Plus 基本上兼容 MyBatis 的所有功能,只是在此基础上增加了新的特性和工具。

        二、MyBatis 的优点

        1.灵活性

        MyBatis提供了高度的SQL定制能力,适合需要精细控制SQL语句的场景。

        2.复杂查询

        对于复杂的查询和多表关联,MyBatis的手动SQL编写能力更有优势。

        3.团队熟悉度

        如果团队成员已经熟悉MyBatis,继续使用它可以减少学习成本。

        4.现有系统集成

        如果现有系统已经使用了MyBatis并且运行良好,没有强烈的需求去更换框架。

        三、决策建议

        如果需要高度定制化查询的应用,或者团队更倾向于对数据库操作有更多控制权,原始的 MyBatis 可能是更好的选择。如果项目强调快速开发,需要快速搭建CRUD操作,且团队愿意采用更现代的开发工具,MyBatis Plus 将是更高效的选择。
        最终决策还应考虑项目的长期维护性、团队的技术栈偏好、以及是否有现成的框架迁移策略。如果项目已经很大且稳定,更改框架可能会带来不必要的风险,除非新的框架能够带来显著的收益,比如显著降低维护成本或提升开发效率。如果项目还在早期阶段,选择MyBatis Plus可能会因为其自动化特性而节省大量的开发时间。


ps:CRUD操作

        CRUD是指在做计算处理时的增加(Create)、读取查询(Retrieve)、更新(Update)和删除(Delete)几个单词的首字母简写。主要被用在描述软件系统中DataBase或者持久层的基本操作功能。

ps:代码生成器

        MyBatis Plus的代码生成器(AutoGenerator)是一种自动化工具,用于根据数据库表结构自动生成对应的Java代码,包括但不限于Entity(实体类或POJOs)、Mapper(数据访问接口)、Mapper XML(映射文件)、Service(业务逻辑层接口及其实现)、Controller(控制器层处理HTTP请求)以及一些其他可能的辅助类或接口。
        这一工具极大地简化了基于MyBatis Plus框架的开发流程,减少了手动编写重复代码的工作量,提高了开发效率。相比于传统的MyBatis Generator,MyBatis Plus的AutoGenerator提供了更多定制化选项和更加简洁的配置方式。
        使用AutoGenerator的基本步骤通常包括:
        1. 在项目中添加MyBatis Plus和代码生成器的依赖。
        2. 配置数据库连接信息和代码生成规则。
        3. 定义输出目录和模板引擎(如Velocity、Freemarker或Beetl)。
        4. 执行代码生成过程。
        从MyBatis Plus 3.0.3版本开始,代码生成器与模板引擎的依赖不再默认包含,需要开发者手动添加到项目中。这允许开发者有更大的灵活性去选择和定制代码生成的过程。

ps:分页查询

        MyBatis-Plus 提供了一套简洁的分页查询功能,它可以帮助你在查询数据时自动进行分页处理,避免一次性加载大量数据导致的性能问题。下面是一些基本步骤,说明如何在 MyBatitis-Plus 中实现分页查询:
        1. 添加依赖
        首先,确保你的项目中已经添加了 MyBatis-Plus 的依赖。如果你使用的是 Maven,那么应该在 'pom.xml' 文件中添加类似如下的依赖:

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>最新版本号</version>
</dependency>

        2. 配置分页插件
        在 Spring Boot 应用中,你通常不需要显式地配置分页插件,因为 MyBatis-Plus 的 Starter 会自动为你添加分页插件。但是,如果你想自定义分页插件的配置,可以在 'application.properties' 或者 'application.yml' 中添加相关配置,或者在 Java 配置类中手动注册分页插件。
        3. 使用分页查询
        在你的 Mapper 接口中,你可以使用 'Page' 对象来进行分页查询,然后,在 Service 层中,你可以创建 'Page'对象并调用方法。

        ps:条件构造器

        在 MyBatis Plus 中,条件构造器(Wrapper)是一种用于构建动态 SQL 查询条件的工具。它提供了一种面向对象的方式来组装 WHERE 子句中的各种条件,而无需直接编写 SQL 代码。条件构造器的主要实现类包括 'QueryWrapper' 和 'UpdateWrapper',它们分别用于构建查询和更新操作的条件。
        'QueryWrapper' 和 'UpdateWrapper' 提供了一系列的方法,可以添加等于、不等于、大于、小于、模糊匹配等条件,以及逻辑运算符(如 AND 和 OR)。此外,它们还支持排序、嵌套查询和其他高级查询功能。这些条件可以动态地根据应用程序的需要添加或移除,从而实现了灵活的查询构建。
        例如,使用 'QueryWrapper' 构建一个查询条件可能如下所示:

List<User> users = userMapper.selectList(
    new QueryWrapper<User>()
        .eq("age", 18)
        .like("name", "John")
        .orderByDesc("id")
);

        在这个例子中,'eq' 方法用于添加等于条件,'like' 方法用于添加模糊匹配条件,而 'orderByDesc' 方法则用于指定排序规则。通过这种方式,MyBatis Plus 的条件构造器极大地简化了 SQL 查询的构建过程,提高了代码的可读性和可维护性。

ps:Lambda 表达式查询

        MyBatis Plus 提供了 Lambda 表达式查询的功能,这是一种基于 Java 8 Lambda 表达式和函数式接口的查询方式,使得查询代码更加简洁、清晰和类型安全。使用 Lambda 表达式查询,我们可以直接使用实体类的属性名作为参数,而不需要引用字段的字符串名称,这大大减少了拼写错误的可能性,并提高了代码的可读性和可维护性。

        LambdaQueryWrapper

        'LambdaQueryWrapper' 是 MyBatis Plus 提供的一个用于构建 Lambda 表达式查询的工具类。它继承自 'QueryWrapper' 并添加了对 Lambda 表达式的支持。以下是一个使用 'LambdaQueryWrapper' 的简单示例:


import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;

// 假设我们有一个 User 类
List<User> userList = userMapper.selectList(
    new LambdaQueryWrapper<User>()
        .eq(User::getId, 1)   // 等值查询
        .like(User::getName, "John") // 模糊查询
        .gt(User::getAge, 18) // 大于
        .lt(User::getAge, 30) // 小于
        .orderByDesc(User::getAge) // 根据年龄降序排序
);

        LambdaUpdateWrapper

        除了查询外,'LambdaUpdateWrapper' 类似于 'LambdaQueryWrapper',但用于构建更新操作的条件。例如:


int rowsAffected = userMapper.update(
    new User().setName("New Name"), // 设置要更新的字段
    new LambdaUpdateWrapper<User>()
        .eq(User::getId, 1) // 指定更新的条件
);

        Lambda 表达式查询的优点

        1.类型安全:由于使用的是实体类的属性,编译器会在编译时检查属性是否存在,避免运行时错误。
        2.代码简洁:可以直接使用属性名,无需字符串形式的字段名,使代码更加简洁明了。
        3.易于阅读和维护:属性名的使用使得代码更加直观,易于理解和维护

        总之,Lambda 表达式查询是 MyBatis Plus 提供的一种强大而实用的特性,能够显著提高代码质量和开发效率。

谢谢支持!成为一位优秀的程序员,道阻且长,你我共勉。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/769379
推荐阅读
相关标签
  

闽ICP备14008679号