Springboot+Druid(可切换Hikari)+Mybatis-plus+mysql+hive的多数据源项目配 ...

打印 上一主题 下一主题

主题 850|帖子 850|积分 2550

1.搭建一个springboot项目,不会的搜一下,很简单这里不做赘述。
2.首先你搭建的springboot能正常启动之后,pom文件添加如下依赖:
  1. <dependency>
  2.             <groupId>com.alibaba</groupId>
  3.             <artifactId>druid</artifactId>
  4.             <version>1.2.8</version> <!-- 选择自己合适的版本,druid连接池依赖,Hikari是springboot自带的不用引入依赖 -->
  5.         </dependency>
  6.       
  7.         <dependency>
  8.             <groupId>com.baomidou</groupId>
  9.             <artifactId>mybatis-plus-boot-starter</artifactId><!--Mybatis-plus依赖-->
  10.             <version>3.5.9</version>
  11.         </dependency>
  12.         <dependency>
  13.             <groupId>com.baomidou</groupId>
  14.             <artifactId>dynamic-datasource-spring-boot-starter</artifactId> <!-- 多数据源依赖 -->
  15.         <version>3.5.0</version>
  16.         </dependency>
  17.       
  18. <!--hive依赖,自行选择版本-->
  19.         <dependency>
  20.             <groupId>org.apache.hive</groupId>
  21.             <artifactId>hive-jdbc</artifactId>
  22.             <version>4.0.1</version>
  23.             <classifier>standalone</classifier>
  24.             <exclusions>
  25.                 <exclusion>
  26.                     <groupId>org.eclipse.jetty</groupId>
  27.                     <artifactId>*</artifactId>
  28.                 </exclusion>
  29.                 <exclusion>
  30.                     <groupId>org.apache.hive</groupId>
  31.                     <artifactId>hive-shims</artifactId>
  32.                 </exclusion>
  33.                 <exclusion>
  34.                     <groupId>org.glassfish</groupId>
  35.                     <artifactId>javax-el</artifactId>
  36.                 </exclusion>
  37.                 <!-- 其他可能的排除项 -->
  38.             </exclusions>
  39.         </dependency>
复制代码
3.编写yaml文件(这里的druid其他自界说参数没设置,可自行查阅资料美满,以下设置能支持一样平常利用):
  1. spring:
  2.   datasource:
  3.     dynamic:
  4.       primary: mysql
  5.       strict: false
  6.       datasource:
  7.         mysql:
  8.           url: jdbc:mysql://你的IP:端口/数据库?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
  9.           username: root
  10.           password: wC62vHcv43!e
  11. #hive配置
  12.         hive:
  13.           url: 你的url
  14.           username: username
  15.           password: password
  16.           driver-class-name: org.apache.hive.jdbc.HiveDriver
  17.           hikari:      #只是为了让控制台不警告,可选,不影响使用
  18.             connection-timeout: 30000  # 连接超时时间(毫秒)
  19.             validation-timeout: 5000   # 验证超时时间(毫秒)
复制代码
4.到此,设置以及预备完成,编写两个数据源的bean设置类:
mysql设置类:
  1. @Configuration
  2. public class MysqlDataSourceConfig {
  3.     @Value("${spring.datasource.dynamic.datasource.mysql.url}")
  4.     private String mysqlUrl;
  5.     @Value("${spring.datasource.dynamic.datasource.mysql.username}")
  6.     private String mysqlUsername;
  7.     @Value("${spring.datasource.dynamic.datasource.mysql.password}")
  8.     private String mysqlPassword;
  9.     @Bean(name = "mysqlDataSource")
  10.     @Primary  // 默认数据源
  11.     public DataSource mysqlDataSource() {
  12.         DruidDataSource config = new DruidDataSource();
  13.         //换成Hikari连接池只需要将这一行代码改为HikariConfig config = new HikariConfig();
  14.         config.setUrl(mysqlUrl);
  15.         config.setUsername(mysqlUsername);
  16.         config.setPassword(mysqlPassword);
  17.         return config;
  18.     }
  19.     @Bean(name = "mysqlJdbcTemplate")
  20.     public JdbcTemplate mysqlJdbcTemplate(@Qualifier("mysqlDataSource") DataSource dataSource) {
  21.         return new JdbcTemplate(dataSource);
  22.     }
  23. }
复制代码
hive设置类:
  1. @Configuration
  2. public class HiveDataSourceConfig {
  3.     @Value("${spring.datasource.dynamic.datasource.hive.url}")
  4.     private String hiveUrl;
  5.     @Value("${spring.datasource.dynamic.datasource.hive.username}")
  6.     private String hiveUsername;
  7.     @Value("${spring.datasource.dynamic.datasource.hive.password}")
  8.     private String hivePassword;
  9.     @Value("${spring.datasource.dynamic.datasource.hive.driver-class-name}")
  10.     private String hiveDriverClassName;
  11.     @Bean(name = "hiveDataSource")
  12.     public DataSource hiveDataSource() {
  13.         DruidDataSource config = new DruidDataSource();
  14.         //换成Hikari连接池只需要将这一行代码改为HikariConfig config = new HikariConfig();
  15.         config.setUrl(hiveUrl);
  16.         config.setUsername(hiveUsername);
  17.         config.setPassword(hivePassword);
  18.         config.setDriverClassName(hiveDriverClassName);
  19.         return config;
  20.     }
  21.     @Bean(name = "hiveJdbcTemplate")
  22.     public JdbcTemplate hiveJdbcTemplate(@Qualifier("hiveDataSource") DataSource dataSource) {
  23.         return new JdbcTemplate(dataSource);
  24.     }
  25. }
复制代码
5.利用:
至于mysql,正常照mybatisplus的利用,mapper,service调用即可
对于hive:
在需要用到的类注入
  1. @Resource
  2. @Qualifier("hiveJdbcTemplate")
  3. private JdbcTemplate hiveJdbcTemplate;
复制代码
利用这个template去实行SQL即可:
  1.   public void test(){
  2.   String query="******"
  3.   hiveJdbcTemplate.execute(query);
  4.   }  
  5.   
复制代码
那么,简述一下Druid和Hikari的区别吧:
1. 操持目标



  • Druid:由阿里巴巴开辟,不仅是一个高性能的数据库连接池,还集成了监控、SQL解析和实行操持分析等功能。它被操持为一个综合性的数据库连接管理和优化工具。
  • HikariCP:由Brett Wooldridge创建,专注于成为最快速、最小化开销的连接池。它的操持理念是简单、高效,只做连接池该做的事变,不做过多的附加功能。
2. 性能



  • Druid:虽然Druid也具有良好的性能表现,但其丰富的特性可能会带来额外的开销。在某些情况下,这些附加功能(如SQL解析、日志记录等)可能会影响性能。
  • HikariCP:以其出色的性能著称,尤其是在高并发情况下,HikariCP通常比其他连接池更快。它通过淘汰锁争用和其他优化技术来达到这一点。
3. 设置复杂度



  • Druid:提供了大量的设置选项,允许用户根据需要进行详细的调整。这使得它非常适合那些对连接池有特定需求的应用程序,但也可能增加了设置的复杂性。
  • HikariCP:设置相对简单,只有几个关键参数需要设置。对于大多数应用程序来说,默认设置已经足够好,不需要太多的调整。
4. 监控和诊断



  • Druid:内置了强盛的监控和统计功能,可以实时检察连接池的状态、SQL实行情况等。这对于调试和性能优化非常有用。
  • HikariCP:没有内置的监控功能,但是可以通过集成外部监控工具(如Micrometer)来实现监控。HikariCP的操持哲学是保持核心功能的轻便性,将监控等功能留给第三方库处理惩罚。
至此,搭建完成,有问题的可批评区留言。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

北冰洋以北

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表