SpringBoo#Mybatis多个数据源配置,Sqlite&Mysql

第一步:
排除数据源的自动配置类:

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})

第二步:
定义好两个数据源的配置文件

#mysql数据库配置
mysql.spring.datasource.jdbc-url =jdbc:mysql://localhost/ts?characterEncoding=utf8&useSSL=true&serverTimezone=GMT%2b8
mysql.spring.datasource.username=root
mysql.spring.datasource.password=root

#sqlite数据库的配置
sqlite.spring.datasource.url = jdbc:sqlite:C:/Users/haonan/Desktop/i-workspace/ss/src/main/resources/idatasrv.db
sqlite.spring.datasource.driver-class-name = org.sqlite.JDBC
sqlite.spring.datasource.username =
sqlite.spring.datasource.password =

#mybatis
mybatis.configuration.map-underscore-to-camel-case=true
logging.level.com.tl.ss.mapper=debug

第三步:
定义数据源Bean,注意配置文件的key要与数据源实例的属性一一对应,否则,肯定失败

@Bean(name = "sqliteDataSource")
@Qualifier(value = "sqliteDataSource")
@ConfigurationProperties(prefix = "sqlite.spring.datasource")
public DataSource dataSource() {
    return DataSourceBuilder.create().type(SQLiteDataSource.class).build();
}

@Bean(name = "mysqlDataSource")
@Qualifier(value = "mysqlDataSource")
@ConfigurationProperties(prefix = "mysql.spring.datasource")
public DataSource mysqlDataSource() {
    return DataSourceBuilder.create().build();
}

第四步:
定义执行sql或者获取mapper的sqlSessionTemplate/或者sqlSessionFactory
mybatis的基本原理是通过sqlSession去执行sql语句操作数据库,或者通过sqlSession获取mapper来操作数据库[个人理解,可能不对]另外,模板构造一般需要Factory实例。
MySql使用:sqlSessionTemplate方式
Sqlite使用:sqlSessionFactory方式

代码1MySql:

@Configuration
@MapperScan(basePackages = {"com.tl.ss.mapper.mysql"}, sqlSessionTemplateRef = "mysqlSqlSessionTemplate")
public class MysqlSqlSessionTemplateConfig {

    @Bean(name = "mysqlSqlSessionFactory")
    public SqlSessionFactory testSqlSessionFactory(@Qualifier("mysqlDataSource") DataSource dataSource) throws Exception {
        SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
        sessionFactoryBean.setDataSource(dataSource);
        sessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver()
                .getResources("classpath*:mapper/mysql/*.xml"));
        return sessionFactoryBean.getObject();
    }

    @Bean(name = "mysqlSqlSessionTemplate")
    public SqlSessionTemplate testSqlSessionTemplate(
            @Qualifier("mysqlSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
        return new SqlSessionTemplate(sqlSessionFactory);
    }
}

代码2Sqlite:

@Configuration
@MapperScan(basePackages = {"com.tl.ss.mapper.sqlite"}, sqlSessionFactoryRef = "sqliteSqlSessionFactory")
public class SqliteSqlSessionFactoryConfig {

    @Bean(name = "sqliteSqlSessionFactory")
    public SqlSessionFactory testSqlSessionFactory(@Qualifier("sqliteDataSource") DataSource dataSource)
            throws Exception {
        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
        bean.setDataSource(dataSource);
        bean.setMapperLocations(new PathMatchingResourcePatternResolver()
                .getResources("classpath*:mapper/sqlite/*.xml"));
        return bean.getObject();
    }

}

第五步:
通过工具生成代码,可以开始干了。

其他:
代码示例:

猜你喜欢

转载自www.cnblogs.com/luohaonan/p/11577002.html
今日推荐