美文网首页工作生活
mybatis连接phoenix操作hbase

mybatis连接phoenix操作hbase

作者: mml_慢慢来 | 来源:发表于2019-07-03 10:54 被阅读0次

    直接上代码

    @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

    相关文章

      网友评论

        本文标题:mybatis连接phoenix操作hbase

        本文链接:https://www.haomeiwen.com/subject/sdxqhctx.html