操作数据库入门示例

java-db 支持多种数据库,以 mysql 为例进行演示

mysql

添加测试数据

首先,我们创建一个表:

CREATE TABLE USER(
  id BIGINT(20) NOT NULL COMMENT '主键ID',
  NAME VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
  age INT(11) NULL DEFAULT NULL COMMENT '年龄',
  email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',
  addr VARCHAR(250) NULL DEFAULT NULL COMMENT '地址',
  remark VARCHAR(250) NULL DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (id)
)

然后,我们随意插入几条记录:

INSERT INTO USER (id, NAME, age, email, addr, remark) VALUES (1, '张三', 25, 'zhangsan@example.com', '北京市朝阳区', '无');
INSERT INTO USER (id, NAME, age, email, addr, remark) VALUES (2, '李四', 30, 'lisi@example.com', '上海市浦东新区', '无');
INSERT INTO USER (id, NAME, age, email, addr, remark) VALUES (3, '王五', 35, 'wangwu@example.com', '广州市天河区', '无');

连接 mysql

接下来,我们添加依赖项:

<dependency>
  <groupId>com.litongjava</groupId>
  <artifactId>java-db</artifactId>
  <version>{java.db.version}</version>
</dependency>
<!-- 连接池 -->
<dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>druid</artifactId>
  <version>1.1.10</version>
</dependency>
<!-- 数据库驱动 -->
<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>5.1.46</version>
</dependency>

最后,我们编写测试代码:

import com.litongjava.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.litongjava.jfinal.plugin.activerecord.Db;
import com.litongjava.jfinal.plugin.activerecord.OrderedFieldContainerFactory;
import com.litongjava.jfinal.plugin.activerecord.Record;
import com.litongjava.jfinal.plugin.druid.DruidPlugin;

import java.util.List;

public class MysqlTestMain {
  public static void main(String[] args) {
    String jdbcUrl = "jdbc:mysql://192.168.3.9:3306/mybatis_plus_study";
    String jdbcUser = "root";
    String jdbcPswd = "robot_123456#";

    DruidPlugin druidPlugin = new DruidPlugin(jdbcUrl, jdbcUser, jdbcPswd);

    ActiveRecordPlugin arp = new ActiveRecordPlugin(druidPlugin);
    arp.setContainerFactory(new OrderedFieldContainerFactory());

    druidPlugin.start();
    arp.start();

    List<Record> records = Db.findAll("USER");
    System.out.println(records.size());

  }
}

这段代码使用 ActiveRecord 插件来连接 MySQL 数据库并执行查询。以下是每部分的详细解释:

  1. 导入所需的库:首先,我们导入了所需的库,包括 ActiveRecordPlugin(用于操作数据库的插件),Db(用于数据库操作的类),OrderedFieldContainerFactory(用于设置字段的顺序),Record(用于表示数据库记录的类),以及 DruidPlugin(用于数据库连接的插件)。

  2. 定义主函数:在main函数中,我们首先定义了数据库的 URL、用户名和密码。

  3. 创建 DruidPlugin 对象:使用数据库的 URL、用户名和密码,我们创建了一个 DruidPlugin 对象,用于管理数据库连接。

  4. 创建 ActiveRecordPlugin 对象:然后,我们使用刚刚创建的 DruidPlugin 对象创建了一个 ActiveRecordPlugin 对象,用于操作数据库。

  5. 设置字段的顺序:通过调用setContainerFactory方法并传入一个新的OrderedFieldContainerFactory对象,我们设置了数据库字段的顺序。

  6. 启动插件:接着,我们调用start方法启动了 DruidPlugin 和 ActiveRecordPlugin 插件。

  7. 执行查询并打印结果:最后,我们调用Db.findAll方法查询了"USER"表中的所有记录,并打印出了记录的数量。

Postgresql

本文档介绍了如何使用 HikariCP 和 ActiveRecord 插件连接 PostgreSQL 数据库,并执行简单的查询操作。

依赖配置

首先,在 pom.xml 文件中添加如下依赖,以引入 PostgreSQL JDBC 驱动程序和 HikariCP 数据库连接池:

<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 代码示例

接下来,在 Java 代码中通过 HikariCP 连接 PostgreSQL 数据库,并使用 ActiveRecord 插件执行数据库操作。

import com.litongjava.db.activerecord.ActiveRecordPlugin;
import com.litongjava.db.activerecord.Db;
import com.litongjava.db.activerecord.OrderedFieldContainerFactory;
import com.litongjava.db.hikaricp.HikariCpPlugin;

public class PostgresTestMain {
  public static void main(String[] args) {
    // 数据库连接信息
    String jdbcUrl = "jdbc:postgresql://192.168.3.9/defaultdb";
    String jdbcUser = "postgres";
    String jdbcPswd = "123456";

    // 初始化 HikariCP 数据库连接池
    HikariCpPlugin hikariCpPlugin = new HikariCpPlugin(jdbcUrl, jdbcUser, jdbcPswd);

    // 使用 ActiveRecord 插件管理数据库操作
    ActiveRecordPlugin arp = new ActiveRecordPlugin(hikariCpPlugin);
    // 设置有序字段容器工厂
    arp.setContainerFactory(new OrderedFieldContainerFactory());

    // 启动数据库连接池和 ActiveRecord 插件
    hikariCpPlugin.start();
    arp.start();

    // 执行 SQL 查询
    for (int i = 0; i < 2; i++) {
      int result = Db.queryInt("select 1");
      System.out.println("Query result: " + result);
    }
  }
}

说明

  • HikariCpPlugin:这是一个用于管理数据库连接池的插件,能够有效地管理数据库连接,并提高查询性能。
  • ActiveRecordPlugin:通过该插件,可以使用简化的 API 执行数据库操作。OrderedFieldContainerFactory 用于确保字段按插入顺序处理。
  • Db.queryInt():该方法用于执行 SQL 查询并返回整数结果。

启动流程

  1. 初始化连接池:通过 HikariCpPlugin 提供数据库的 URL、用户名和密码来初始化连接池。
  2. 设置 ActiveRecord 插件:通过 ActiveRecordPlugin 关联连接池,并启动数据库操作管理。
  3. 执行查询:通过 Db.queryInt() 方法执行简单的查询操作,确保数据库连接和查询功能正常工作。