在对doris进行单元测试,要测试大量sql,没有连接池时,太多连接会出现问题。于是想采用druid连接池。
要使用Druid连接池连接Doris,你需要在Java代码中进行配置。以下是一个简单的示例,包含Druid连接池的配置和连接到Doris的Java代码。
首先,你需要在项目的依赖中添加Druid和Doris的驱动程序。在Maven项目中,可以在pom.xml
文件中添加以下依赖:
<dependencies>
<!-- Druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.4</version>
</dependency>
<!-- Doris JDBC Driver -->
<dependency>
<groupId>com.mysql.jdbc</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.23</version>
</dependency>
</dependencies>
接下来,创建一个名为DruidDorisExample
的Java类,并编写以下代码:
import com.alibaba.druid.pool.DruidDataSource;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class DruidDorisExample {
public static void main(String[] args) {
// 创建Druid连接池
DruidDataSource dataSource = new DruidDataSource();
dataSource.setUrl("jdbc:mysql://localhost:9030/my_database");
dataSource.setUsername("username");
dataSource.setPassword("password");
try (Connection connection = dataSource.getConnection()) {
// 执行查询语句
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery("SELECT * FROM my_table");
// 遍历结果集并输出数据
while (resultSet.next()) {
// 处理每一行的数据
// 例如:String columnValue = resultSet.getString("column_name");
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
在上面的代码中,你需要将jdbc:mysql://localhost:9030/my_database
替换为Doris的连接信息,以及正确的用户名和密码。
此外,你还可以通过在代码中设置其他Druid连接池的配置来优化连接性能。例如,你可以设置最大连接数、是否开启预处理语句缓存等。
要进行更详细的Druid连接池和Doris配置,你需要创建一个名为druid.properties
的配置文件,并在main()
方法中加载它:
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class DruidDorisExample {
public static void main(String[] args) throws IOException {
Properties properties = new Properties();
try (InputStream inputStream = DruidDorisExample.class.getClassLoader().getResourceAsStream("druid.properties")) {
properties.load(inputStream);
}
try {
DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);
Connection connection = dataSource.getConnection();
// 执行查询语句...
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
java复制代码import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class DruidDorisExample {
public static void main(String[] args) throws IOException {
Properties properties = new Properties();
try (InputStream inputStream = DruidDorisExample.class.getClassLoader().getResourceAsStream("druid.properties")) {
properties.load(inputStream);
}
try {
DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);
Connection connection = dataSource.getConnection();
// 执行查询语句...
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
上述代码会从类路径下加载名为druid.properties
的配置文件,该文件包含了Druid连接池的详细配置项。你可以根据需要在配置文件中设置相关属性,例如连接URL、用户名、密码、最大连接数等。配置文件的示例:
# Druid连接池配置
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:9030/my_database
username=username
password=password
# 连接池配置
initialSize=5
maxActive=20
minIdle=1
maxWait=60000
请确保druid.properties
文件与Java代码在同一个目录下或处于类路径中。
以上是连接到Doris的简单示例代码和配置文件。你可以根据自己的需求进行进一步调整和优化。
我自己实践时,参考网上别的配置文件,后来发现还是连接不上,而且一直在运行, 通过排查代码,参考
Druid连接池关键代码解读 ,发现是下面的配置影响了:
#测试SQL
validationQuery=select 1 from test
原来这个表test并不存在,所以测试不通过,又没有明显报错。