引入MyBatis
<!-- 连接mysql的必要依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- 整合MyBatis的核心依赖 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
配置数据库信息
spring.datasource.hostel.jdbc-url=xxx
spring.datasource.hostel.username=root
spring.datasource.hostel.password=xxx
spring.datasource.hostel.driver-class-name=com.mysql.cj.jdbc.Driver
hostel为自定义名称,可配置多个。
根据包路径进行使用源配置
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import javax.sql.DataSource;
/**
* 自定义数据源
*/
@Configuration
@MapperScan(basePackages = "com.springmvc.mapper.hostel", sqlSessionTemplateRef = "hostelSqlSessionTemplate")
public class DataSourceHostelConfig {
@Primary
@Bean(name = "hostelDataSource")
@ConfigurationProperties(prefix = "spring.datasource.hostel")
public DataSource hostelDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "hostelSqlSessionFactory")
public SqlSessionFactory hostelSqlSessionFactory(@Qualifier("hostelDataSource") DataSource dataSource) throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
// 指定数据源
bean.setDataSource(dataSource);
// 注意:自定义的sqlSessionFactory不会加载mybatis配置
// 指定mapper.xml位置
bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/hostel/*.xml"));
org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
// 开启驼峰命名
configuration.setMapUnderscoreToCamelCase(true);
// 连接超时时间
configuration.setDefaultStatementTimeout(15);
bean.setConfiguration(configuration);
return bean.getObject();
}
@Bean(name = "hostelSqlSessionTemplate")
public SqlSessionTemplate hostelSqlSessionTemplate(@Qualifier("hostelSqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
这里的@ConfigurationProperties(prefix = "spring.datasource.hostel")
指定了数据库的连接数据。
@Primary
指定了该配置为主库,没有主从可以不加。
@MapperScan(basePackages = "com.springmvc.mapper.hostel", sqlSessionTemplateRef = "hostelSqlSessionTemplate")
根据mapper的所在位置进行不同的数据源使用。
加入druid连接池
<!--连接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.8</version>
</dependency>
在创建Datasource时更换:
import com.alibaba.druid.pool.DruidDataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import javax.sql.DataSource;
/**
* 旅馆数据库
*/
@Configuration
@MapperScan(basePackages = "com.springmvc.mapper.hostel", sqlSessionTemplateRef = "hostelSqlSessionTemplate")
public class DataSourceHostelConfig {
@Value("${spring.datasource.hostel.jdbc-url}")
private String jdbcUrl;
@Value("${spring.datasource.hostel.username}")
private String username;
@Value("${spring.datasource.hostel.password}")
private String password;
@Bean(name = "hostelDataSource")
public DataSource hostelDataSource() {
DruidDataSource druidDataSource = new DruidDataSource();
druidDataSource.setUrl(jdbcUrl);
druidDataSource.setUsername(username);
druidDataSource.setPassword(password);
druidDataSource.setKeepAlive(true);
druidDataSource.setMaxActive(5);
return druidDataSource;
}
@Bean(name = "hostelSqlSessionFactory")
public SqlSessionFactory hostelSqlSessionFactory(@Qualifier("hostelDataSource") DataSource dataSource) throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
// 指定数据源
bean.setDataSource(dataSource);
// 注意:自定义的sqlSessionFactory不会加载mybatis配置
// 指定mapper.xml位置
bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/hostel/*.xml"));
org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
// 开启驼峰命名
configuration.setMapUnderscoreToCamelCase(true);
// 连接超时时间
configuration.setDefaultStatementTimeout(15);
bean.setConfiguration(configuration);
return bean.getObject();
}
@Bean(name = "hostelSqlSessionTemplate")
public SqlSessionTemplate hostelSqlSessionTemplate(@Qualifier("hostelSqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
}
}