SpringBoot整合Mybatis-Plus源码分析(一)

一、Mybatis-Plus简介

Mybatis-Plus 是 Mybatis 的增强工具包,可以简化 Mybatis 的开发,提高开发效率和代码质量。它提供了许多实用的功能,包括自动生成 SQL、分页插件、逻辑删除、乐观锁、性能分析等,可以帮助开发者快速开发高质量的数据库访问代码。

Mybatis-Plus 的主要特点包括:

  1. 简化 CRUD 操作:Mybatis-Plus 提供了通用的 CRUD 方法,可以简化开发者的代码量。
  2. 自动生成 SQL:Mybatis-Plus 可以根据实体类自动生成 SQL,避免手写 SQL 的繁琐和出错。
  3. 分页插件:Mybatis-Plus 提供了分页插件,可以方便地进行分页查询。
  4. 逻辑删除:Mybatis-Plus 支持逻辑删除,可以将删除操作转化为更新操作,避免数据的永久删除。
  5. 乐观锁:Mybatis-Plus 支持乐观锁,可以避免数据的并发更新冲突。
  6. 性能分析:Mybatis-Plus 提供了性能分析功能,可以方便地分析 SQL 的执行情况,优化 SQL 的性能。

总之,Mybatis-Plus 是一个非常实用的 Mybatis 增强工具包,可以帮助开发者提高开发效率和代码质量,让数据库访问变得更加简单和优雅。

二、
MybatisPlusAutoConfiguration介绍


MybatisPlusAutoConfiguration 是 Mybatis-Plus 框架提供的自动配置类,用于自动配置 Mybatis-Plus 的各种组件和属性。它会根据配置文件和类路径下的文件自动配置 Mybatis-Plus,包括数据源、实体类扫描、Mapper 接口扫描、分页插件等。使用 MybatisPlusAutoConfiguration 可以简化 Mybatis-Plus 的配置过程,提高开发效率。MybatisPlusAutoConfiguration 中包含了许多自动配置的 Bean,例如 MybatisSqlSessionFactoryBean、MybatisConfiguration、MybatisPlusInterceptor 等。这些 Bean 可以被其他组件自动注入使用,从而实现对 Mybatis-Plus 的集成。除了提供自动配置功能,MybatisPlusAutoConfiguration 还提供了一些配置属性,可以通过配置文件进行修改和覆盖。例如,可以通过配置 mybatis-plus.mapper-locations 属性指定 Mapper 接口的扫描路径,或者通过配置 mybatis-plus.global-config.db-config.logic-delete-value 和 mybatis-plus.global-config.db-config.logic-not-delete-value 属性指定逻辑删除的值。

总之,
MybatisPlusAutoConfiguration 是 Mybatis-Plus 框架中非常重要的一个组件,它可以帮助我们快速集成 Mybatis-Plus,并提供了丰富的配置选项,使得我们可以更加灵活地配置 Mybatis-Plus。

三、
MybatisPlusAutoConfiguration构造SqlSessionFactory对象源码分析

首先该方法自动从容器中获取一个DataSource数据源对象,然后手动创建了一个
MybatisSqlSessionFactoryBean对象,该类实现了FactoryBean对象,Spring容器在创建对象时候会自动调用该类的getObject方法,关于该类的getObject方法在下一节会详细分析,判断用户是否自定义了configLocation,该属性可以配置一些自定义的类似分页插件,如果定义了设置到MybatisSqlSessionFactoryBean的成员属性configLocation上,判断容器中是否有Interceptor数组,该Interceptor对象是一个插件,实现该接口会调用对象的intercept方法,如果定义了设置到MybatisSqlSessionFactoryBean的成员属性plugins上,接着判断是否有别名包,如果设置了类似mybatis-plus.type-aliases-package=com.example.entity,那么在配置文件中可以直接写实体类名称而不用写包名,接着判断是否有typeHandlersPackage,该配置可以指定自定义类型处理器的包路径,您可以告诉 MyBatis Plus 在指定的包路径下扫描并注册自定义的类型处理器,以处理特定的 Java 类型与数据库类型之间的转换,接着判断是否有mapperLocations配置,如果有加载到mapperLocations成员属性上,那么mapper接口和配置文件将从您定义的路径加载,成员属性都设置完成以后调用对象MybatisSqlSessionFactoryBean的getObject方法,有关该方法下一节将会详细进行分析。

你可能感兴趣的:(mybatis,java,spring,boot)