spring-mybatis整合
目录
- spring-mybatis整合
- 准备工作,架包
- 创建一个虚拟目录放配置文件
- 开始配置spring的配置(applicationConfig.xml)
- 整合mybatis部分
- 注解的配置
spring-mybatis整合
准备工作,架包
创建一个虚拟目录放配置文件
开始配置spring的配置(applicationConfig.xml)
引入aop,context,tx的约束
spring的配置
整合mybatis部分
引出问题,怎样将mybatis的SqlSessionFactory,SqlSession,和创建接口代理对象呢?
/*
* 没有注入UserMapper,UserMapper是一个接口,无法实例化
* 在mybatis中,
* 1.创建SqlSessionFactory对象
* 2.再创建SqlSession对象
* 3.通过getMapper(UserMapper.class)来创建代理对象
*
* ------------------------------------
* 解决方案:
* 1.创建SqlSessionFactory对象
* 将SqlSessionFactory对象交由spring容器来管理
* org.mybatis.spring.SqlSessionFactoryBean
* 2.再创建SqlSession对象
* spring创建了sqlSessionFactory对象后会自动的创建SqlSession对象
* 3.通过getMapper(UserMapper.class)来创建代理对象
* 为接口创建代理对象(单个)
* org.mybatis.spring.mapper.MapperFactoryBean
* 通过扫描包的形式创建代理对象
* org.mybatis.spring.mapper.MapperScannerConfigurer
*
*
*/
配置整合部分:
classpath:/cn/zj/ssm/mapper/*UserMapper.xml
注解的配置
SpringConfig
@Configuration
@ComponentScan("cn.zj.ssm")//扫描包
@PropertySource("classpath:db.properties")//扫描配置文件
@EnableTransactionManagement//开启事务的注解
@MapperScan("cn.zj.ssm.mapper")//开启创建xxxmapper接口代理对象的注解
public class SpringConfig {
@Value("${jdbc.driverClassName}")
private String driverClassName;
@Value("${jdbc.url}")
private String url;
@Value("${jdbc.username}")
private String username;
@Value("${jdbc.password}")
private String password;
@Value("${jdbc.maxActive}")
private int maxAcrive;
//配置数据库连接池
@Bean
public DataSource getDataSource() {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(this.driverClassName);
dataSource.setUrl(this.url);
dataSource.setUsername(this.username);
dataSource.setPassword(this.password);
dataSource.setMaxActive(this.maxAcrive);
return dataSource;
}
//配置事务管理器
@Bean
public PlatformTransactionManager getTxManager() {
DataSourceTransactionManager transactionManager = new DataSourceTransactionManager(getDataSource());
return transactionManager;
}
//创建SqlSessionFactory
@Bean
public SqlSessionFactory getSqlSessionFactory() throws Exception {
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
//配置数据源
factoryBean.setDataSource(getDataSource());
//配置别名
factoryBean.setTypeAliasesPackage("cn.zj.ssm.pojo");
return factoryBean.getObject();
}
}