spring boot学习笔记(2)

Spring boot集成mybatis的三种方式

一、XML文件

  在pom文件里面引入mybatis和数据库的依赖

  在application.properties中加入数据源配置

  

  其他和ssm配置完全一样

二、注解方式

  同上,只是少了xml文件配置,通过注解的形式配置在mapper文件里

  

 

  

三、多数据源

  多数据源,可以同时连接多个数据库

  

  创建两个数据源配置文件ClusterDataSourceConfig.java、MasterDataSourceConfig.java

  

package org.spring.springboot.config.ds;

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.Qualifier;
import org.springframework.beans.factory.annotation.Value;
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 org.springframework.jdbc.datasource.DataSourceTransactionManager;

import javax.sql.DataSource;

@Configuration
// 扫描 Mapper 接口并容器管理
@MapperScan(basePackages = ClusterDataSourceConfig.PACKAGE, sqlSessionFactoryRef = "clusterSqlSessionFactory")
public class ClusterDataSourceConfig {

// 精确到 cluster 目录,以便跟其他数据源隔离
static final String PACKAGE = "org.spring.springboot.dao.cluster";
static final String MAPPER_LOCATION = "classpath:mapper/cluster/*.xml";

@Value("${cluster.datasource.url}")
private String url;

@Value("${cluster.datasource.username}")
private String user;

@Value("${cluster.datasource.password}")
private String password;

@Value("${cluster.datasource.driverClassName}")
private String driverClass;

@Bean(name = "clusterDataSource")
public DataSource clusterDataSource() {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(driverClass);
dataSource.setUrl(url);
dataSource.setUsername(user);
dataSource.setPassword(password);
return dataSource;
}

@Bean(name = "clusterTransactionManager")
public DataSourceTransactionManager clusterTransactionManager() {
return new DataSourceTransactionManager(clusterDataSource());
}

@Bean(name = "clusterSqlSessionFactory")
public SqlSessionFactory clusterSqlSessionFactory(@Qualifier("clusterDataSource") DataSource clusterDataSource)
throws Exception {
final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(clusterDataSource);
sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver()
.getResources(ClusterDataSourceConfig.MAPPER_LOCATION));
return sessionFactory.getObject();
}
}

这样配置之后,可以就可以同时操作两个数据库了


  

   

 

 

 

 

 

  

posted @ 2018-10-13 12:41  小胡同学QAQ  阅读(124)  评论(0)    收藏  举报