关于mybatis和mybatis-plus两个依赖

他们俩的依赖不同:

mybatis的依赖:

<dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.4</version>
        </dependency>

一般这个依赖你在创建springboot的项目时,勾选了mybatis时,pom.xml文件中就已经有了这个依赖

对应的application.yml文件(或者application.propertity)配置如下所示:

mybatis:    #设置mapper的路径和实体
  mapper-locations: classpath*:mapper/*Mapper.xml
  type-aliases-package: com.qc.qc_blog.entity

 

而mybatis-plus的依赖:

<dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus</artifactId>
            <version>2.3</version>
        </dependency>

<!--         https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>2.3</version>
        </dependency>

对应的application.yml文件(或者application.propertity)配置如下所示:

mybatis-plus:    #设置mapper的路径和实体
  mapper-locations: classpath*:mapper/*Mapper.xml
  type-aliases-package: com.qc.qc_blog.entity

注意查看mapper-locations有没有写对,没有写对时,IDEA会将其标出:

如下图少了一个s(其他的一些规范的命名也一样,少一个字母都不行):

我是不会说,某次我因为这个原因找了很久没找到问题所在的,注意查看yml文件

<think>嗯,我现在需要弄清楚MyBatis依赖MyBatis-Plus依赖之间的区别。首先,我应该回忆一下这两个框架的基本信息。 MyBatis是一个持久层框架,它通过XML或注解来配置映射原生信息到数据库记录。它简化了JDBC代码,处理了参数设置结果集映射,但用户还是需要自己写SQL语句。比如,我之前用MyBatis的时候,每个Mapper接口都要写对应的XML文件,虽然灵活,但有时候感觉挺繁琐的。 然后听说MyBatis-PlusMyBatis的增强工具,在保留原有功能的基础上做了扩展。可能MyBatis-Plus提供了更多的便利功能,比如自动生成代码或者内置的CRUD方法。这样的话,开发者可能不需要写那么多重复的SQL了,比如基本的增删改查可以直接调用现成的方法。 接下来,我需要详细比较两者的核心功能差异。MyBatis的核心功能是SQL映射,而MyBatis-Plus可能在此基础上添加了自动CRUD、分页插件、代码生成器等功能。比如,MyBatis-Plus的BaseMapper接口可能已经提供了insert、selectById等方法,不需要自己写这些简单操作的SQL。 另外,关于配置方面,MyBatis需要配置数据源、事务管理器、Mapper扫描等,而MyBatis-Plus可能简化了这些配置,或者提供了默认配置。比如,在Spring Boot中集成MyBatis-Plus可能只需要添加依赖少量配置即可,自动注入各种组件。 性能方面,两者应该差不多,因为MyBatis-Plus是在MyBatis的基础上进行扩展,并没有改变底层的执行机制。不过,需要确认是否有额外的性能开销,比如分页插件是否会影响效率,但一般来说,这些增强功能设计时应该考虑到了性能优化。 适用场景方面,MyBatis适合需要高度定制SQL、对SQL有严格控制的场景,而MyBatis-Plus适合快速开发,减少样板代码,提高开发效率。比如在开发后台管理系统时,大量的CRUD操作用MyBatis-Plus会更高效。 另外,MyBatis-Plus提供了一些MyBatis没有的特性,比如逻辑删除、自动填充字段(如创建时间、更新时间)、乐观锁插件等。这些功能在MyBatis中需要手动实现,而MyBatis-Plus内置支持,减少了开发时间。 还需要考虑两者在依赖管理上的区别。MyBatis-Plus依赖是否包含了MyBatis的核心库,还是需要单独引入。通常,添加MyBatis-Plus依赖会自动引入MyBatis,所以不需要额外添加MyBatis依赖。但有时候可能存在版本兼容性问题,需要注意版本匹配。 例如,在Maven项目中,引入MyBatis-Plus的starter可能会自动处理这些依赖关系,而使用MyBatis的话,可能需要单独引入MyBatis依赖以及与Spring整合的库。 总结来说,MyBatis-PlusMyBatis的基础上提供了更多开箱即用的功能,简化了开发流程,而MyBatis则更注重灵活性对SQL的直接控制。选择哪一个取决于项目需求,如果需要快速开发且不需要复杂的SQL,MyBatis-Plus更合适;如果需要高度定制化的SQL,或者项目已经基于MyBatis构建,可能继续使用MyBatis更好。</think>MyBatis MyBatis-Plus 是 Java 中常用的持久层框架,二者核心区别在于 **功能扩展开发效率**。以下是逐步对比分析: --- ### 一、核心定位差异 1. **MyBatis** - **定位**:基础 ORM 框架,提供 SQL 与 Java 对象的映射能力。 - **特点**:需手动编写 SQL DAO 层代码,灵活性高,但重复工作较多(如 CRUD 操作)。 - **代码示例**: ```java // Mapper 接口需手动定义方法 public interface UserMapper { @Select("SELECT * FROM user WHERE id = #{id}") User selectById(Long id); } ``` 2. **MyBatis-Plus** - **定位**:MyBatis 的增强工具,**保留 MyBatis 所有功能**,额外提供自动化能力。 - **特点**:内置通用 CRUD、代码生成器、分页插件等,减少约 80% 的手动编码。 - **代码示例**: ```java // 继承 BaseMapper 即可直接使用预置方法 public interface UserMapper extends BaseMapper<User> {} ``` --- ### 二、核心功能对比 | **功能** | **MyBatis** | **MyBatis-Plus** | |-----------------------|-------------------|-------------------------------------------| | **基础 CRUD** | 需手动编写 SQL | 内置通用方法(如 `selectById()`, `insert()`) | | **代码生成器** | 无 | 支持自动生成 Entity、Mapper、Service 等代码 | | **分页插件** | 需手动实现 | 内置分页插件(`Page<T>`, `IPage<T>`) | | **逻辑删除** | 需手动处理 | 通过注解 `@TableLogic` 一键配置 | | **字段自动填充** | 无 | 支持 `@TableField(fill = FieldFill.INSERT)` | | **乐观锁** | 需手动实现 | 内置 `@Version` 注解支持 | --- ### 三、依赖配置区别 1. **MyBatis 依赖**(Maven) ```xml <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.10</version> </dependency> ``` 2. **MyBatis-Plus 依赖**(Maven) ```xml <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.3.1</version> </dependency> ``` - **注意**:MyBatis-Plus 依赖已包含 MyBatis 核心,**无需重复引入**。 --- ### 四、适用场景 1. **选择 MyBatis** - 需要高度定制复杂 SQL。 - 项目已深度使用 MyBatis,无改造计划。 2. **选择 MyBatis-Plus** - 追求开发效率,减少重复代码(如后台管理系统)。 - 需要快速集成分页、逻辑删除等通用功能。 --- ### 五、性能对比 - **执行效率**:二者底层均基于 MyBatis,性能差异可忽略。 - **开发效率**:MyBatis-Plus 显著更高(尤其在简单 CRUD 场景)。 --- ### 总结 - **MyBatis**:灵活控制 SQL,适合复杂查询场景。 - **MyBatis-Plus**:开箱即用,适合快速开发,建议新项目优先选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿,葱来了-C is coming

老板大气

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值