spring整合mybatis的配置类
一、SpringConfig配置类:
@Configuration
@ComponentScan(basePackages = "com.xxx.xxx")
@Import({
MybatisConfig.class,JdbcConfig.class})
public class SpringConfig {
}
二、Mybatis的配置类
@Configuration
public class MybatisConfig {
@Bean("pageInterceptor")
public Interceptor pageInterceptor() {
return new PageInterceptor();
}
@Bean // SqlSessionFactoryBean 负责给我们产生sqlSession 知道数据源 ,在创建这个对象的时候指定你的数据源
public SqlSessionFactoryBean sqlSessionFactoryBean(@Autowired DataSource dataSource, @Autowired @Qualifier("pageInterceptor") Interceptor pageInterceptor) {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dataSource);
sqlSessionFactoryBean.setPlugins(new Interceptor[]{
pageInterceptor});
org.apache.ibatis.session.Configuration config = new org.apache.ibatis.session.Configuration();
// 开启驼峰命名 [mybatis 配置文件操作,settings 标签 配置 ]
config.setMapUnderscoreToCamelCase(true);
sqlSessionFactoryBean.setConfiguration(config);
return sqlSessionFactoryBean;
}
@Bean
public MapperScannerConfigurer mapperScannerConfigurer() {
MapperScannerConfigurer scannerConfigurer = new MapperScannerConfigurer();
scannerConfigurer.setBasePackage("com.xxx.mapper");
return scannerConfigurer;
}
}
三、JDBC配置类
将获取dataSource的方法取出,防止mybatis配置类先进入spring容器,导致出错
@Configuration // 声明当前类为配置类
@PropertySource(value = "classpath:jdbc.properties") // 读取属性文件并且加载到spring容器
public class JdbcConfig {
@Value("${jdbc.url}")
private String url;
@Value("${jdbc.driver}")
private String driverClassName;
@Value("${jdbc.username}")
private String username;
@Value("${jdbc.password}")
private String password;
// 构建DruidDataSource 这个数据源是由 阿里巴巴 提供 第三方bean
@Bean // 把当前方法的返回值对象放入到spring容器中;注意默认使用方法的名字作为对象名称
public DataSource dataSource(){
DruidDataSource dataSource = new DruidDataSource();
dataSource.setUrl(url);
dataSource.setDriverClassName(driverClassName);
dataSource.setUsername(username);
dataSource.setPassword(password);
return dataSource;
}
}
四、db.properties
设置properties配置文件的原因是解耦
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/t2?useSSL=false&characterEncoding=utf8&serverTimezone=Asia/Shanghai jdbc.username=root jdbc.password=root
