直接上代码
@Configuration
public class HBaseConfig {
@Primary
@Bean
@ConfigurationProperties(prefix="spring.datasource.druid.mybatis")
public DataSource druidDataSource() {
return DruidDataSourceBuilder.create().build();
}
@Bean
@ConfigurationProperties(prefix="spring.datasource.druid.hbase")
public DataSource phoenixDataSource() {
return DruidDataSourceBuilder.create().build();
}
@Bean
public JdbcTemplate jdbcTemplate() {
JdbcTemplate jdbcTemplate = new JdbcTemplate();
jdbcTemplate.setDataSource(phoenixDataSource());
jdbcTemplate.setLazyInit(false);
return jdbcTemplate;
}
@Configuration
@MapperScan(basePackages = {"com.tiku.dao"}, sqlSessionFactoryRef = "sqlSessionFactory0")
@EnableConfigurationProperties(MybatisProperties.class)
public class DataSourceConfig0 {
@Autowired
private MybatisProperties mybatisProperties;
@Bean
public SqlSessionFactory sqlSessionFactory0() {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(druidDataSource());
if (mybatisProperties != null && mybatisProperties.getConfiguration() != null) {
sqlSessionFactoryBean.setConfiguration(mybatisProperties.getConfiguration());
}
if (mybatisProperties != null && mybatisProperties.getConfigurationProperties() != null) {
sqlSessionFactoryBean.setConfigurationProperties(mybatisProperties.getConfigurationProperties());
}
try {
return sqlSessionFactoryBean.getObject();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Bean
public SqlSessionTemplate sqlSessionTemplate0() {
SqlSessionTemplate template = new SqlSessionTemplate(sqlSessionFactory0()); // 使用上面配置的Factory
return template;
}
}
@Configuration
@MapperScan(basePackages = {"com.tiku.hbase"}, sqlSessionFactoryRef = "sqlSessionFactory1")
public class DataSourceConfig1 {
@Bean
public SqlSessionFactory sqlSessionFactory1() {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(phoenixDataSource());
try {
return sqlSessionFactoryBean.getObject();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Bean
public SqlSessionTemplate sqlSessionTemplate1() {
SqlSessionTemplate template = new SqlSessionTemplate(sqlSessionFactory1());
return template;
}
}
}
这种方式就不需要通过原生的jdbc连接操作hbase了, 刚弄的时候觉得这太坑了吧,后来想着,phoenix是实现了jdbc驱动操作hbase,所以可以通过mybatis配置多数据源就能达到同时操作mysql和hbase
网友评论