根配置如下:
package com.xxx.sm.config;
import com.alibaba.druid.pool.DruidDataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.TransactionManager;
import javax.sql.DataSource;
/**
* 根容器配置类
* 其中用于配置:
* 1.数据源配置
* 2.mybatis配置-SqlSessionFactory配置
* 3.事务管理配置
*
* @MapperScan:映射器扫描器注解,该注解会将指定包中的接口作为SQL映射进行管理
* @PropertySource:导入外部的资源文件
*/
@Configuration
@ComponentScan("com.xxx.sm.service")
@MapperScan("com.xxx.sm.mapper")
@PropertySource("db.properties")
public class RootConfig {
@Value("${jdbc.driver}")
private String driver;
@Value("${jdbc.url}")
private String url;
@Value("${jdbc.username}")
private String username;
@Value("${jdbc.password}")
private String password;
/**
* 配置数据源(数据的提供者)
*
* @return
*/
@Bean
public DataSource dataSource() {
System.out.println(driver+","+url+","+username+","+password);
//创建基于Druid的数据源对象
// DataSource dataSource = new DruidDataSource();
DruidDataSource dataSource = new DruidDataSource();
//数据库连接配置
dataSource.setDriverClassName(driver);
dataSource.setUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(password);
//数据库连接池配置
dataSource.setMinIdle(3);//设置最小空闲连接,最少有几个空闲连接是不用的,如果低于这些就会自动增加
dataSource.setMaxActive(100);//设置最大活动连接,就是允许最多同时有多少连接可以同时使用
dataSource.setMaxWait(1000);//设置最大等待时间,以毫秒为单位
return dataSource;
}
/**
* 配置SqlSessionFactory对象
* 操作数据库的,所以需要数据源
*
* @return
*/
@Bean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) {
try {
//创建SqlSessionFactoryBean
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
//设置当前SqlSessionFactoryBean所使用的数据源
sqlSessionFactoryBean.setDataSource(dataSource);
//通过sqlSessionFactoryBean(用来生产SqlSessionFactory对象的)对象获得一个SqlSessionFactory对象
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBean.getObject();
return sqlSessionFactory;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 配置TransactionManager事务管理器
* @return
*/
@Bean
public TransactionManager transactionManager(DataSource dataSource){
//TransactionManager transactionManager = new DataSourceTransactionManager();
//创建一个事务管理器对象
PlatformTransactionManager transactionManager = new DataSourceTransactionManager(dataSource);
return transactionManager;
}
}
pom.xml配置如下
<dependencies>
<!--Spring-context,其中包含Spirng的核心包-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.23</version>
</dependency>
<!--spring-aop植入包-->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.6.8</version>
</dependency>
<!--mybatis核心包-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
<!--mybatis-spring的整合包-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.0</version>
</dependency>
<!--mysql驱动包-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
<!-- log4j2 -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.22.0</version>
</dependency>
<!--阿里巴巴德鲁伊数据源包-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.16</version>
</dependency>
<!--Spirng的JDBC支持包-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.3.23</version>
</dependency>
<!--Spring的事务管理包-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>5.3.23</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.30</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>