Spring 整合 MyBatis

spring 整合 mybatis  步骤
  1. 导入 所需要的依赖
  2.配置mybatis文件  mybatis-config mapper.xml
   mybatis-config  不需要配置数据源 只需要取别名 引入映射文件
  3.建立  domain mapper service  写一个查询所有的接口
  4.建立spring配置文件
     4.1 第一步 配置数据源
     4.2 第二部 配置环境
     4.3 第三步 整合mybatis SqlSessionFactory --》build -->sqlsession
         MapperScannerConfigure
     4.4 扫描包 service
  5.写测试类
   1 .  applicationContext.xml  找不到 mybatis-config classpath多个*
   2.mybatis 引入 映射文件  路径问题
   3.userService 没有注入  扫描包  名字 对不对
   4.com.jdbc.cj.mysql.driver 8.0  5 版本不要 cj
   5.username和password 和 数据源重名  加 jdbc.username
SqlSessionFactoryBean     MapperScannerConfigure
BasicDataSource

SqlSessionFactoryBean 源码解析

SqlSessionFactoryBean 是 MyBatis 框架中的一个关键类,它是用于创建和配置 SqlSessionFactory 实例的 Spring Bean。下面是对 SqlSessionFactoryBean 的源码解析:

  1. SqlSessionFactoryBean 类位于 org.mybatis.spring.SqlSessionFactoryBean 包中。

  2. SqlSessionFactoryBean 继承自 org.springframework.beans.factory.config.AbstractFactoryBean 类,实现了 org.springframework.beans.factory.InitializingBean 接口。

  3. 主要属性:

    • dataSource:数据源,用于指定与数据库的连接。
    • configLocation:MyBatis 配置文件的位置,包含了 MyBatis 的全局配置信息。
    • mapperLocations:Mapper 接口的 XML 映射文件的位置,包含了 SQL 语句的定义和映射关系。
    • plugins:MyBatis 插件列表,用于在执行 SQL 语句前后进行拦截和处理。
    • typeAliasesPackage:实体类别名的包路径,使得可以使用简短的别名来代替完整的类名。
    • typeHandlersPackage:类型处理器的包路径,用于将数据库字段与 Java 对象之间进行转换。
  4. SqlSessionFactoryBean 在初始化过程中主要执行以下步骤:

    • 调用 afterPropertiesSet() 方法,该方法是 InitializingBean 接口的回调方法,用于在所有属性设置完成后进行初始化。
    • 加载并解析 MyBatis 的全局配置文件,创建并配置 Configuration 对象。
    • 根据配置的数据源和 MyBatis 配置创建 SqlSessionFactory 对象,并将其设置为该类的最终输出目标。
  5. 通过重写 getObject() 方法,SqlSessionFactoryBean 返回一个 SqlSessionFactory 实例,从而使得 Spring 可以将其作为一个 Bean 注入到其他组件中使用。

总的来说,SqlSessionFactoryBean 是一个用于创建和配置 MyBatis 的 SqlSessionFactory 实例的 Spring Bean,它通过解析 MyBatis 的配置文件、数据源等属性来创建 SqlSessionFactory 对象,并提供了一些可选的配置选项来扩展和定制 MyBatis 的行为。这样,我们可以方便地将 MyBatis 和 Spring 进行集成,并在应用程序中使用 MyBatis 提供的强大功能。

MapperScannerConfigure 源码解析

MapperScannerConfigurer 是 MyBatis-Spring 提供的一个类,用于扫描 Mapper 接口,并将其注册到 Spring 容器中。下面是对 MapperScannerConfigurer 的源码解析:

  1. MapperScannerConfigurer 类位于 org.mybatis.spring.mapper.MapperScannerConfigurer 包中。

  2. MapperScannerConfigurer 实现了 BeanFactoryPostProcessor 接口,因此在 Spring 容器启动过程中会被自动调用。

  3. 主要属性:

    • basePackage:指定要扫描的 Mapper 接口所在的包路径。
    • sqlSessionFactoryBeanName:指定 SqlSessionFactory Bean 的名称,用于获取 SqlSessionFactory 实例。
  4. 在 Spring 容器启动过程中,MapperScannerConfigurer 的主要任务是通过扫描指定包路径下的 Mapper 接口,并将其注册为 Spring 的 Bean 对象。

    • 通过实现 BeanFactoryPostProcessor 接口,在 Spring 容器初始化过程中的 postProcessBeanFactory() 方法中进行处理。
    • 首先,根据 sqlSessionFactoryBeanName 获取 SqlSessionFactory 实例。
    • 然后,使用 ClassPathMapperScanner 扫描器扫描指定包路径下的 Mapper 接口。
    • 扫描到 Mapper 接口后,会使用 MapperFactoryBean 创建 Mapper 接口的代理对象,并将其注册到 Spring 容器中。
  5. MapperScannerConfigurer 还提供了一些其他的配置选项,如 annotationClassmarkerInterface 等,用于更精确地控制扫描和注册的条件。

总的来说,MapperScannerConfigurer 是一个用于简化 Mapper 接口扫描和注册的类。通过配置指定的包路径,它能够自动扫描并将 Mapper 接口注册为 Spring 的 Bean 对象,从而使得我们可以方便地使用注入方式访问和使用这些 Mapper 接口。这样,我们可以轻松结合 MyBatis 和 Spring 框架,实现数据持久层的快速开发和集成。

BasicDataSource 源码解析

BasicDataSource 是 Apache Commons DBCP(数据库连接池)库中的一个类,用于管理和分配数据库连接资源。下面是对 BasicDataSource 的源码解析:

  1. BasicDataSource 类位于 org.apache.commons.dbcp2.BasicDataSource 包中。

  2. BasicDataSource 实现了 javax.sql.DataSource 接口,提供了获取数据库连接、释放连接等基本功能。

  3. 主要属性:

    • url:数据库连接的 URL。
    • driverClassName:数据库驱动类名。
    • username 和 password:连接数据库的用户名和密码。
    • initialSize:连接池初始化时创建的连接数。
    • maxTotal:连接池最大的连接数。
    • minIdle:连接池最小的空闲连接数。
    • maxIdle:连接池最大的空闲连接数。
    • maxWaitMillis:获取连接的最大等待时间。
    • 其他连接池相关的配置属性,如验证查询语句、超时设置等。
  4. BasicDataSource 在初始化过程中主要执行以下步骤:

    • 根据配置的属性参数,创建并初始化连接池。
    • 当需要获取数据库连接时,从连接池中获取可用连接。
    • 当需要释放连接时,将连接归还给连接池,并将连接置为可用状态。
  5. BasicDataSource 还提供了一些方法来动态修改连接池的配置,如 setMaxTotal()setMinIdle() 等。

总的来说,BasicDataSource 是一个用于管理和分配数据库连接资源的类,它通过连接池技术提供了高效、可复用的数据库连接。通过配置连接属性,我们可以创建一个可用的 BasicDataSource 对象,用于在应用程序中获取和释放数据库连接。这样可以有效地减少数据库连接的创建和销毁开销,并提升应用程序的性能和扩展性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值