数据源配置与使用
HikariCP
java-db 为了支持 HikariCP 内置了 HikariCpPlugin,下面讲解一下 如何使用 HikariCP
引入依赖
在项目的 pom.xml
文件中,需要引入以下依赖库:
<dependency>
<groupId>com.litongjava</groupId>
<artifactId>java-db</artifactId>
<version>{java.db.version}</version>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.2.24</version>
</dependency>
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>4.0.3</version>
</dependency>
这里 java-db
提供了 ActiveRecordPlugin
的支持,postgresql
是 PostgreSQL 数据库驱动,HikariCP
是用于数据库连接池管理的库。
数据库配置
在 app.properties
文件中,配置 PostgreSQL 数据库连接信息:
DATABASE_DSN=postgresql://doadmin:123456@192.168.3.9:5432/defaultdb
DATABASE_DSN
是数据库连接的 Data Source Name (DSN),包括数据库类型、用户名、密码、主机地址、端口和数据库名。
数据源配置代码
以下是配置数据源、初始化数据库连接池、配置 HikariCpPlugin 和 ActiveRecordPlugin
的代码。
import com.jfinal.template.Engine;
import com.jfinal.template.source.ClassPathSourceFactory;
import com.litongjava.annotation.AConfiguration;
import com.litongjava.annotation.Initialization;
import com.litongjava.db.activerecord.ActiveRecordPlugin;
import com.litongjava.db.activerecord.OrderedFieldContainerFactory;
import com.litongjava.db.activerecord.dialect.PostgreSqlDialect;
import com.litongjava.db.hikaricp.HikariCpPlugin;
import com.litongjava.model.dsn.JdbcInfo;
import com.litongjava.tio.boot.server.TioBootServer;
import com.litongjava.tio.utils.dsn.DbDSNParser;
import com.litongjava.tio.utils.environment.EnvUtils;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@AConfiguration
public class DbConfig {
@Initialization
public void config() {
// 获取数据库连接信息
String dsn = EnvUtils.getStr("DATABASE_DSN");
JdbcInfo jdbc = new DbDSNParser().parse(dsn);
// 初始化 HikariCP 数据库连接池
HikariCpPlugin hikariCpPlugin = new HikariCpPlugin(jdbc.getUrl(), jdbc.getUser(), jdbc.getPswd());
hikariCpPlugin.start();
// 初始化 ActiveRecordPlugin
ActiveRecordPlugin arp = new ActiveRecordPlugin(hikariCpPlugin);
// 开发环境下启用开发模式
if (EnvUtils.isDev()) {
arp.setDevMode(true);
}
// 是否展示 SQL
boolean showSql = EnvUtils.getBoolean("jdbc.showSql", false);
log.info("show sql:{}", showSql);
arp.setShowSql(showSql);
arp.setDialect(new PostgreSqlDialect());
arp.setContainerFactory(new OrderedFieldContainerFactory());
// 配置引擎
Engine engine = arp.getEngine();
engine.setSourceFactory(new ClassPathSourceFactory());
engine.setCompressorOn(' ');
engine.setCompressorOn('\n');
// 启动 ActiveRecordPlugin
arp.start();
// 在应用销毁时停止数据库连接池
TioBootServer.me().addDestroyMethod(() -> {
arp.stop();
hikariCpPlugin.stop();
});
}
}
代码说明
- DSN 解析:通过
DbDSNParser
解析 DSN 配置信息,得到JdbcInfo
对象,用于初始化数据库连接池。 - HikariCP 初始化:
HikariCpPlugin
用于创建并启动数据库连接池。 - ActiveRecordPlugin:配置并启动
ActiveRecordPlugin
,设置 PostgreSQL 方言 (PostgreSqlDialect
) 及容器工厂 (OrderedFieldContainerFactory
)。 - 引擎配置:通过
Engine
设置模板引擎的源和压缩策略。 - 销毁方法:应用关闭时停止数据库连接池及 ActiveRecordPlugin。
数据源配置单元测试
import org.junit.Test;
import com.litongjava.db.activerecord.Db;
import com.litongjava.tio.utils.environment.EnvUtils;
public class DbConfigTest {
@Test
public void test() {
// 加载环境变量
EnvUtils.load();
// 执行数据库配置
new DbConfig().config();
// 执行简单的 SQL 查询测试
for (int i = 0; i < 2; i++) {
Db.queryInt("select 1");
}
}
}
测试说明
- 通过
EnvUtils.load()
加载环境变量,包括数据库连接配置。 - 使用
Db.queryInt()
方法执行简单的 SQL 查询,验证数据库连接池和 ActiveRecordPlugin 的正常运行。