创建SqlSessionFactory就需要DataSource
所以我们先创建DataSource的Bean
public class JdbcConfig {
@Value("${jdbc.driver}")
private String driver;
@Value("${jdbc.url}")
private String url;
@Value("${jdbc.username}")
private String userName;
@Value("${jdbc.password}")
private String password;
@Bean
public DataSource dataSource(){
DruidDataSource ds = new DruidDataSource();
ds.setDriverClassName(driver);
ds.setUrl(url);
ds.setUsername(userName);
ds.setPassword(password);
return ds;
}
}
这部分就相当于以下图片
创建了 DataSource之后就可以创建SqlSessionFactory的工厂类
因为创建SqlSessionFactory需要太多东西了,我们直接用别人创建好的工厂对象SqlSessionFactoryBean创建出来因为
SqlSessionFactoryBean实现了FactoryBean<SqlSessionFactory>
所以他可以创造出来SqlSessionFactory,而且更简单
ssfb.setDataSource(DataSource ds)注意这传入的是DataSource对象
这里就要用到我们刚才创建出来的DataSource的Bean直接设置为为形参传入进来即可
@Bean
public SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource){
SqlSessionFactoryBean ssfb = new SqlSessionFactoryBean();
ssfb.setTypeAliasesPackage("com.dd.domain");
ssfb.setDataSource(dataSource);
return ssfb;
}
最后一步就是
的配置文件这一步我们该怎么写呢?
就是以下代码
//定义bean,返回MapperScannerConfigurer对象
@Bean
public MapperScannerConfigurer mapperScannerConfigurer(){
MapperScannerConfigurer msc = new MapperScannerConfigurer();
msc.setBasePackage("com.dd.dao");
return msc;
}
这下我们就配置完毕了创造出工厂了之后SqlSessionFactory之后,
java会自动根据配置文件或者注解创造出对应的代理对象