spring的spring-mybatis.xml
这里我就不详细描述了,晚上实在是太多了
https://blog.csdn.net/weixin_41910059/article/details/82659238
这个大佬写的还是不错,你可别删啊,跪求!!!
spring对于ORM 的整合(以mybatis为例)
- 配置spring所需的数据源(一个或者多个)
- 创建sessionFactoryBean (一般来说这个sessionFactroy 包含实体类和CRUD 所需要的功能文件
- 将功能代理注入到Spring
spring 连接数据库需要数据源,形式有很多种,一般比较常用而且推荐的方式是JNDI 数据源和数据连接池。这里不多做论述。
为spring 数据访问服务的本质是Session 接口,这个接口中有各种访问数据库的参数,而获取 Session 对象的标准方式是通过session Factory ,而为了符合spring 框架的低耦合性质,所以就是sessionFactoryBean的形式,这个factory需要的是映射的规则和方法的信息,用来创建访问功能的代理
SessionFactory 能都控制 Session的打开、关闭以及管理
有了个功能代理,为了减少程序的耦合性,这里依然用接口的形式进行解耦合,这样就出现了功能接口也就是我们平时使用的DAO接口(或者Map接口)
注解方式:
@Bean(name="sqlSessionFactory")
public SqlSessionFactoryBean sessionFactory(@Value("classpath:/db/mybatis-config.xml") Resource configLocation) throws PropertyVetoException, IOException {
SqlSessionFactoryBean ssfb = new SqlSessionFactoryBean();
// 设置数据源
ssfb.setDataSource(dataSource());
// 设置mybatis 全局配置文件
ssfb.setConfigLocation(configLocation);
// 扫描实体类包,使用别名
ssfb.setTypeAliasesPackage("red.Minortone.pojo");
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
//Resource[] resources = resolver.getResources("classpath*:red.Minortone/mapper/*Mapper.xml");
ssfb.setMapperLocations(resolver.getResources("classpath*:red.Minortone/mapper/*Mapper.xml"));
/*System.out.println(resources.length);
for(Resource resource:resources){
System.out.println(resource.getURL());
}*/
return ssfb;
}
@Bean
public MapperScannerConfigurer scannerConfigurer(){
MapperScannerConfigurer msc = new MapperScannerConfigurer();
msc.setSqlSessionFactoryBeanName("sqlSessionFactory");
msc.setBasePackage("red.Minortone.dao");
msc.setAnnotationClass(Repository.class);
return msc;
}
mybatis的工作理解
DAO层功能接口 -》 MapperScannerConfigurer (mapper 扫描配置) -》 SqlSessionFactoryBean(sessionfactory) -》 SQLSession -》 Mybatis 功能实现