
Spring中

Spring整合Mybatis要导入两个坐标
1:要导入在Spring中操作数据库的jar包

2:Spring和Mybatis融合一起要导入jar包:
这个包不是Spring的,他是Mybatis的,是Mybatis融合Spring

配置Spring文件SpringConfig:

数据源jdbcConfig:

在Spring配置文件中要想扫描到数据源Config,加注解

然后jdbcConfig上面要木加注解:@Configuration要么在Spring配置文件
加注解:import(JdbcConfig.class)

Mybatis配置类:

最后:


总结:
引入俩坐标

数据源正常做

Spring配置类:

增加了MybatisConfig(里面定义俩Bean(全固定格式(只需要改包名))):



在MybatisConfig配置文件里有两个Bean
package com.itheima.config;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.context.annotation.Bean;
import javax.sql.DataSource;
public class MyBatisConfig {
@Bean
public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource){
SqlSessionFactoryBean factoryBean=new SqlSessionFactoryBean();
factoryBean.setDataSource(dataSource);
factoryBean.setTypeAliasesPackage("com.itheima.domain");
return factoryBean;
}
public MapperScannerConfigurer mapperScannerConfigurer(){
MapperScannerConfigurer msc=new MapperScannerConfigurer();
msc.setBasePackage("com.heima.dao");
return msc;
}
}
第一个bean:
@Bean
public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource){
SqlSessionFactoryBean factoryBean=new SqlSessionFactoryBean();
factoryBean.setDataSource(dataSource);
factoryBean.setTypeAliasesPackage("com.itheima.domain");
return factoryBean;
}
这段代码定义了一个使用@Bean注解的方法,该方法用于配置并返回一个SqlSessionFactoryBean实例。SqlSessionFactoryBean是MyBatis框架中用于创建SqlSessionFactory的工厂Bean,而SqlSessionFactory是MyBatis的核心组件,用于创建SqlSession实例。SqlSession是MyBatis中用于执行SQL语句和管理数据库事务的主要接口。
代码解析:
@Bean注解表明这个方法会由Spring容器调用,以注册一个Bean到Spring应用上下文中。- 方法名为
sqlSessionFactoryBean,它接受一个DataSource类型的参数,这个参数通常由Spring配置管理。 SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();这行代码创建了一个SqlSessionFactoryBean的实例。factoryBean.setDataSource(dataSource);这行代码设置了SqlSessionFactoryBean实例的数据源。数据源是数据库连接的抽象,MyBatis使用它来获取数据库连接。factoryBean.setTypeAliasesPackage("com.itheima.domain");这行代码告诉MyBatis扫描com.itheima.domain包下的所有类,并为它们创建别名。这样,在MyBatis的映射文件或注解中,就可以使用类名(不带包名)作为别名来引用这些类。- 方法返回了配置好的
SqlSessionFactoryBean实例。
使用场景:
- 当Spring应用上下文启动时,Spring容器会调用这个方法,创建并注册一个
SqlSessionFactory的Bean。 - 之后,你可以在Spring配置中注入这个
SqlSessionFactory,或者通过其他配置方式(如MapperScannerConfigurer)来自动扫描并注册Mapper接口。
注意事项:
- 确保
DataSource实例已经通过Spring配置正确创建并注入到这个方法中。 typeAliasesPackage属性设置的包路径应包含你希望在MyBatis中使用别名的实体类(domain classes)。- 通常,
SqlSessionFactoryBean的配置会与DataSource的配置一起,放在Spring的配置类中,以实现MyBatis与Spring的整合。
这段代码是MyBatis与Spring整合时配置SqlSessionFactory的标准做法,它简化了MyBatis的配置过程,并允许Spring管理MyBatis的组件。
第二个Bean:
@Bean
public MapperScannerConfigurer mapperScannerConfigurer(){
MapperScannerConfigurer msc=new MapperScannerConfigurer();
msc.setBasePackage("com.heima.dao");
return msc;
}
这段代码定义了一个使用@Bean注解的方法,该方法创建并返回一个MapperScannerConfigurer实例。MapperScannerConfigurer是Spring框架中用于自动扫描并注册MyBatis的Mapper接口到Spring容器中的配置类。通过这种方式,可以简化MyBatis与Spring整合时的配置工作。
代码解析:
@Bean注解表明这个方法会由Spring容器调用,以注册一个Bean到Spring应用上下文中。- 方法名为
mapperScannerConfigurer,它不接受任何参数。 MapperScannerConfigurer msc = new MapperScannerConfigurer();这行代码创建了一个MapperScannerConfigurer的实例。msc.setBasePackage("com.heima.dao");这行代码指定了Spring容器在初始化时需要扫描的包路径。MapperScannerConfigurer会扫描这个包及其子包下所有的接口,并自动注册它们为Spring的Bean。这些接口通常都是MyBatis的Mapper接口,用于定义SQL映射和操作数据库的方法。- 方法返回了配置好的
MapperScannerConfigurer实例。
使用场景:
- 当Spring应用上下文启动时,Spring容器会调用这个方法,创建并注册一个
MapperScannerConfigurer的Bean。 - 之后,Spring容器会自动扫描
com.heima.dao包及其子包下的所有接口,并将它们注册为Spring的Bean。这些接口通常需要使用@Mapper注解标记,以便MyBatis识别它们为Mapper接口。
注意事项:
- 确保
MapperScannerConfigurer实例的basePackage属性设置正确,以包含所有需要自动注册的Mapper接口。 - 通常,
MapperScannerConfigurer的配置会与SqlSessionFactory的配置一起,放在Spring的配置类中,以实现MyBatis与Spring的整合。 - 如果你的Mapper接口使用了
@Mapper注解,Spring会自动识别并注册这些接口为Bean。如果没有使用@Mapper注解,你可能需要在MapperScannerConfigurer中额外设置annotationClass属性。
通过使用MapperScannerConfigurer,可以避免手动为每个Mapper接口编写配置代码,从而简化了MyBatis与Spring整合的配置过程。
综上MyBatisConfig的配置类里所需要填写的东西:
