quarkus框架相关资料较少,现将quarkus框架集成mysql和pg以及通过impala连接hive数据库以及的实现记录下来。
quarkus集成各类数据库,可以通过mybatis作为桥梁,这样我们只需求引入不同的数据库连接包以及不同的数据库连接配置即可,以下即为实现过程。
集成mysql配置
引入pom
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-jdbc-mysql</artifactId>
</dependency>
配置application.yml
quarkus:
datasource:
db-kind: mysql
jdbc:
driver: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://${ip}:${port}/${database}?useUnicode=true&characterEncoding=UTF-8&createDatabaseIfNotExist=true&autoReconnect=true&allowMultiQueries=true&serverTimezone=GMT%2B8&useSSL=false
initial-size: 5
min-size: 5
max-size: 10
username: ${username}
password: ${password}
集成pg配置
引入pom
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-jdbc-postgresql</artifactId>
</dependency>
配置application.yml
quarkus:
datasource:
db-kind: postgresql
jdbc:
driver: 'org.postgresql.Driver'
url: jdbc:postgresql://${ip}:${port}/${database}
initial-size: 10
min-size: 10
max-size: 30
username: ${username}
password: ${password}
集成impala连接hive数据库配置
引入pom
<dependency>
<groupId>impala</groupId>
<artifactId>impala-jdbc41</artifactId>
<version>2.6.30</version>
</dependency>
配置application.yml
quarkus:
datasource:
dw:
db-kind: hive
jdbc:
driver: 'com.cloudera.impala.jdbc41.Driver'
url: jdbc:impala://${ip}:${port}/${database}
initial-size: 10
min-size: 10
max-size: 30
background-validation-interval : 5m
acquisition-timeout: 20
username: ${username}
集成mybatis配置
使用时可以集成mybatis,集成mybatis需引入下面包
<dependency>
<groupId>io.quarkiverse.mybatis</groupId>
<artifactId>quarkus-mybatis-plus</artifactId>
<version>1.0.7</version>
</dependency>
配置增加开启驼峰命名规则映射
quarkus:
mybatis:
map-underscore-to-camel-case: true
业务调用
定义接口,可以调用baseMapper里的默认方法,也可以自定义sql语句实现业务逻辑
@Mapper
public interface TestMapper extends BaseMapper<Test> {
//自定义sql实现业务
@Select("SELECT * from test where id=#{id}")
List<Test> selectByid(int id);
}
@ApplicationScoped
public class TestService {
@Inject
TestMapper testMapper;
public List<Test> getList(int id){
List<Test> dataDates = testMapper.selectById(id);
return dataDates;
}
}