简单配置创建一个mysql+pg的数据库
引入依赖
<dependency>
<groupId>com.gitee.phaeris</groupId>
<artifactId>astrub</artifactId>
<version>1.1.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
</dependency>
配置
astrub:
# 是否开启自动注册为数据源(如果本身已有数据源可能会导致覆盖的情况)
enabled: false
# sql语法解析器(默认mysql)
lex: mysql
schemas:
# 第一个schema为默认schema
- name: mysql
driver: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/astrub
user: root
password: root
- name: pg
driver: org.postgresql.Driver
url: jdbc:postgresql://localhost:5432/astrub
user: postgres
password: 123456
数据库脚本
mysql
create table address
(
name varchar(200) null comment '名字',
area varchar(20) null
)
charset = utf8;
pg
create table phone
(
name varchar,
phone varchar
);
查询
@ExtendWith(SpringExtension.class)
@SpringBootTest
public class DatasourceTest {
@Test
void testCalcite() {
String sql = "select p.name, p.phone, m.area " +
"from pg.phone p " +
"left join address m on p.name = m.name";
JdbcTemplate calciteTemplate = new JdbcTemplate(ConnectionHelper.getDatasource());
List<Map<String, Object>> result = calciteTemplate.queryForList(sql);
Assertions.assertFalse(result.isEmpty());
System.out.println(result);
}
}
组件源码详见Astrub