1.搭建一个springboot项目,不会的搜一下,很简单这里不做赘述。
2.首先你搭建的springboot能正常启动之后,pom文件添加如下依赖:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.8</version> <!-- 选择自己合适的版本,druid连接池依赖,Hikari是springboot自带的不用引入依赖 -->
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId><!--Mybatis-plus依赖-->
<version>3.5.9</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId> <!-- 多数据源依赖 -->
<version>3.5.0</version>
</dependency>
<!--hive依赖,自行选择版本-->
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-jdbc</artifactId>
<version>4.0.1</version>
<classifier>standalone</classifier>
<exclusions>
<exclusion>
<groupId>org.eclipse.jetty</groupId>
<artifactId>*</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.hive</groupId>
<artifactId>hive-shims</artifactId>
</exclusion>
<exclusion>
<groupId>org.glassfish</groupId>
<artifactId>javax-el</artifactId>
</exclusion>
<!-- 其他可能的排除项 -->
</exclusions>
</dependency>
3.编写yaml文件(这里的druid其他自定义参数没配置,可自行查阅资料完善,以下配置能支持一般使用):
spring:
datasource:
dynamic:
primary: mysql
strict: false
datasource:
mysql:
url: jdbc:mysql://你的IP:端口/数据库?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
username: root
password: wC62vHcv43!e
#hive配置
hive:
url: 你的url
username: username
password: password
driver-class-name: org.apache.hive.jdbc.HiveDriver
hikari: #只是为了让控制台不警告,可选,不影响使用
connection-timeout: 30000 # 连接超时时间(毫秒)
validation-timeout: 5000 # 验证超时时间(毫秒)
4.到此,配置以及准备完成,编写两个数据源的bean配置类:
mysql配置类:
@Configuration
public class MysqlDataSourceConfig {
@Value("${spring.datasource.dynamic.datasource.mysql.url}")
private String mysqlUrl;
@Value("${spring.datasource.dynamic.datasource.mysql.username}")
private String mysqlUsername;
@Value("${spring.datasource.dynamic.datasource.mysql.password}")
private String mysqlPassword;
@Bean(name = "mysqlDataSource")
@Primary // 默认数据源
public DataSource mysqlDataSource() {
DruidDataSource config = new DruidDataSource();
//换成Hikari连接池只需要将这一行代码改为HikariConfig config = new HikariConfig();
config.setUrl(mysqlUrl);
config.setUsername(mysqlUsername);
config.setPassword(mysqlPassword);
return config;
}
@Bean(name = "mysqlJdbcTemplate")
public JdbcTemplate mysqlJdbcTemplate(@Qualifier("mysqlDataSource") DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
}
hive配置类:
@Configuration
public class HiveDataSourceConfig {
@Value("${spring.datasource.dynamic.datasource.hive.url}")
private String hiveUrl;
@Value("${spring.datasource.dynamic.datasource.hive.username}")
private String hiveUsername;
@Value("${spring.datasource.dynamic.datasource.hive.password}")
private String hivePassword;
@Value("${spring.datasource.dynamic.datasource.hive.driver-class-name}")
private String hiveDriverClassName;
@Bean(name = "hiveDataSource")
public DataSource hiveDataSource() {
DruidDataSource config = new DruidDataSource();
//换成Hikari连接池只需要将这一行代码改为HikariConfig config = new HikariConfig();
config.setUrl(hiveUrl);
config.setUsername(hiveUsername);
config.setPassword(hivePassword);
config.setDriverClassName(hiveDriverClassName);
return config;
}
@Bean(name = "hiveJdbcTemplate")
public JdbcTemplate hiveJdbcTemplate(@Qualifier("hiveDataSource") DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
}
5.使用:
至于mysql,正常照mybatisplus的使用,mapper,service调用即可
对于hive:
在需要用到的类注入
@Resource
@Qualifier("hiveJdbcTemplate")
private JdbcTemplate hiveJdbcTemplate;
使用这个template去执行SQL即可:
public void test(){
String query="******"
hiveJdbcTemplate.execute(query);
}
那么,简述一下Druid和Hikari的区别吧:
1. 设计目标
- Druid:由阿里巴巴开发,不仅是一个高性能的数据库连接池,还集成了监控、SQL解析和执行计划分析等功能。它被设计为一个综合性的数据库连接管理和优化工具。
- HikariCP:由Brett Wooldridge创建,专注于成为最快速、最小化开销的连接池。它的设计理念是简单、高效,只做连接池该做的事情,不做过多的附加功能。
2. 性能
- Druid:虽然Druid也具有良好的性能表现,但其丰富的特性可能会带来额外的开销。在某些情况下,这些附加功能(如SQL解析、日志记录等)可能会影响性能。
- HikariCP:以其出色的性能著称,尤其是在高并发环境下,HikariCP通常比其他连接池更快。它通过减少锁争用和其他优化技术来达到这一点。
3. 配置复杂度
- Druid:提供了大量的配置选项,允许用户根据需要进行详细的调整。这使得它非常适合那些对连接池有特定需求的应用程序,但也可能增加了配置的复杂性。
- HikariCP:配置相对简单,只有几个关键参数需要设置。对于大多数应用程序来说,默认配置已经足够好,不需要太多的调整。
4. 监控和诊断
- Druid:内置了强大的监控和统计功能,可以实时查看连接池的状态、SQL执行情况等。这对于调试和性能优化非常有用。
- HikariCP:没有内置的监控功能,但是可以通过集成外部监控工具(如Micrometer)来实现监控。HikariCP的设计哲学是保持核心功能的简洁性,将监控等功能留给第三方库处理。
至此,搭建完成,有问题的可评论区留言。