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
的源码解析:
-
SqlSessionFactoryBean
类位于org.mybatis.spring.SqlSessionFactoryBean
包中。 -
SqlSessionFactoryBean
继承自org.springframework.beans.factory.config.AbstractFactoryBean
类,实现了org.springframework.beans.factory.InitializingBean
接口。 -
主要属性:
dataSource
:数据源,用于指定与数据库的连接。configLocation
:MyBatis 配置文件的位置,包含了 MyBatis 的全局配置信息。mapperLocations
:Mapper 接口的 XML 映射文件的位置,包含了 SQL 语句的定义和映射关系。plugins
:MyBatis 插件列表,用于在执行 SQL 语句前后进行拦截和处理。typeAliasesPackage
:实体类别名的包路径,使得可以使用简短的别名来代替完整的类名。typeHandlersPackage
:类型处理器的包路径,用于将数据库字段与 Java 对象之间进行转换。
-
SqlSessionFactoryBean
在初始化过程中主要执行以下步骤:- 调用
afterPropertiesSet()
方法,该方法是InitializingBean
接口的回调方法,用于在所有属性设置完成后进行初始化。 - 加载并解析 MyBatis 的全局配置文件,创建并配置
Configuration
对象。 - 根据配置的数据源和 MyBatis 配置创建
SqlSessionFactory
对象,并将其设置为该类的最终输出目标。
- 调用
-
通过重写
getObject()
方法,SqlSessionFactoryBean
返回一个SqlSessionFactory
实例,从而使得 Spring 可以将其作为一个 Bean 注入到其他组件中使用。
总的来说,SqlSessionFactoryBean
是一个用于创建和配置 MyBatis 的 SqlSessionFactory
实例的 Spring Bean,它通过解析 MyBatis 的配置文件、数据源等属性来创建 SqlSessionFactory
对象,并提供了一些可选的配置选项来扩展和定制 MyBatis 的行为。这样,我们可以方便地将 MyBatis 和 Spring 进行集成,并在应用程序中使用 MyBatis 提供的强大功能。
MapperScannerConfigure 源码解析
MapperScannerConfigurer
是 MyBatis-Spring 提供的一个类,用于扫描 Mapper 接口,并将其注册到 Spring 容器中。下面是对 MapperScannerConfigurer
的源码解析:
-
MapperScannerConfigurer
类位于org.mybatis.spring.mapper.MapperScannerConfigurer
包中。 -
MapperScannerConfigurer
实现了BeanFactoryPostProcessor
接口,因此在 Spring 容器启动过程中会被自动调用。 -
主要属性:
basePackage
:指定要扫描的 Mapper 接口所在的包路径。sqlSessionFactoryBeanName
:指定SqlSessionFactory
Bean 的名称,用于获取SqlSessionFactory
实例。
-
在 Spring 容器启动过程中,
MapperScannerConfigurer
的主要任务是通过扫描指定包路径下的 Mapper 接口,并将其注册为 Spring 的 Bean 对象。- 通过实现
BeanFactoryPostProcessor
接口,在 Spring 容器初始化过程中的postProcessBeanFactory()
方法中进行处理。 - 首先,根据
sqlSessionFactoryBeanName
获取SqlSessionFactory
实例。 - 然后,使用
ClassPathMapperScanner
扫描器扫描指定包路径下的 Mapper 接口。 - 扫描到 Mapper 接口后,会使用
MapperFactoryBean
创建 Mapper 接口的代理对象,并将其注册到 Spring 容器中。
- 通过实现
-
MapperScannerConfigurer
还提供了一些其他的配置选项,如annotationClass
、markerInterface
等,用于更精确地控制扫描和注册的条件。
总的来说,MapperScannerConfigurer
是一个用于简化 Mapper 接口扫描和注册的类。通过配置指定的包路径,它能够自动扫描并将 Mapper 接口注册为 Spring 的 Bean 对象,从而使得我们可以方便地使用注入方式访问和使用这些 Mapper 接口。这样,我们可以轻松结合 MyBatis 和 Spring 框架,实现数据持久层的快速开发和集成。
BasicDataSource 源码解析
BasicDataSource
是 Apache Commons DBCP(数据库连接池)库中的一个类,用于管理和分配数据库连接资源。下面是对 BasicDataSource
的源码解析:
-
BasicDataSource
类位于org.apache.commons.dbcp2.BasicDataSource
包中。 -
BasicDataSource
实现了javax.sql.DataSource
接口,提供了获取数据库连接、释放连接等基本功能。 -
主要属性:
url
:数据库连接的 URL。driverClassName
:数据库驱动类名。username
和password
:连接数据库的用户名和密码。initialSize
:连接池初始化时创建的连接数。maxTotal
:连接池最大的连接数。minIdle
:连接池最小的空闲连接数。maxIdle
:连接池最大的空闲连接数。maxWaitMillis
:获取连接的最大等待时间。- 其他连接池相关的配置属性,如验证查询语句、超时设置等。
-
BasicDataSource
在初始化过程中主要执行以下步骤:- 根据配置的属性参数,创建并初始化连接池。
- 当需要获取数据库连接时,从连接池中获取可用连接。
- 当需要释放连接时,将连接归还给连接池,并将连接置为可用状态。
-
BasicDataSource
还提供了一些方法来动态修改连接池的配置,如setMaxTotal()
、setMinIdle()
等。
总的来说,BasicDataSource
是一个用于管理和分配数据库连接资源的类,它通过连接池技术提供了高效、可复用的数据库连接。通过配置连接属性,我们可以创建一个可用的 BasicDataSource
对象,用于在应用程序中获取和释放数据库连接。这样可以有效地减少数据库连接的创建和销毁开销,并提升应用程序的性能和扩展性。