The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:
这是如何使用jcabi-jdbc从SQL表中获取文本的方法:
String name = new JdbcSession(source)
.sql("SELECT name FROM employee WHERE id = ?")
.set(1234)
.select(new SingleOutcome<String>(String.class));
简单而直接,不是吗?这个库通过JDBC简化了与关系数据库的交互,避免了使用ORM的需要。
jcabi-jdbc 是 JDBC 的一个轻量级包装器。当您不需要完整的 ORM(如 Hibernate),只想在关系数据库中选择、插入或更新几行数据时,它非常方便使用。
每个JdbcSession
实例都是数据库中的一个”事务”。您可以通过实例化这个类并传入一个参数(数据源)来启动它。
您可以从连接池获取数据源。有许多连接池的实现。我建议您使用BoneCP。以下是连接到PostgreSQL的示例:
@Cacheable(forever = true)
private static DataSource source() {
BoneCPDataSource src = new BoneCPDataSource();
src.setDriverClass("org.postgresql.Driver");
src.setJdbcUrl("jdbc:postgresql://localhost/db_name");
src.setUser("jeff");
src.setPassword("secret");
return src;
}
请务必注意@Cacheable
注解。本文解释了它如何帮助您在一段时间内缓存Java方法的结果。将forever
属性设置为true
意味着我们不希望该方法被调用多次。相反,我们希望连接池只创建一次,并且每次第二次调用都应返回其现有实例(类似于单例模式)。
jcabi-jdbc 网站解释了如何执行插入、更新或删除行的操作。您还可以执行任意的 SQL 语句。
默认情况下,JdbcSession
在第一次选择/更新/插入操作后立即关闭 JDBC 连接。简而言之,它主要设计用于单一原子事务。然而,也可以选择保持连接开启并继续操作,例如:
new JdbcSession(source)
.autocommit(false)
.sql("START TRANSACTION")
.update()
.sql("DELETE FROM employee WHERE name = ?")
.set("Jeff Lebowski")
.update()
.sql("INSERT INTO employee VALUES (?)")
.set("Walter Sobchak")
.insert(Outcome.VOID)
.commit();
在这个例子中,我们逐个执行三个SQL语句,直到调用commit()
之前保持连接(和事务)处于打开状态。
Translated by ChatGPT gpt-3.5-turbo/35 on 2023-09-20 at 21:58