EJDB2 Java开发实战:从环境搭建到完整CRUD操作教程

【免费下载链接】ejdb :snowboarder: EJDB2 — Embeddable JSON Database engine C library. Simple XPath like query language (JQL). Websockets / Android / iOS / React Native / Flutter / Java / Dart / Node.js bindings. Docker image. 【免费下载链接】ejdb 项目地址: https://gitcode.com/gh_mirrors/ej/ejdb

EJDB2是一款轻量级嵌入式JSON数据库引擎,它提供了简单高效的Java绑定,让开发者能够轻松实现本地数据存储功能。本教程将从环境搭建开始,逐步引导你完成EJDB2的完整CRUD操作,帮助你快速掌握这一强大工具的使用方法。

一、EJDB2简介

EJDB2(Embedded JSON Database engine)是一个高性能的嵌入式JSON数据库C库,支持类似XPath的查询语言(JQL),并提供了丰富的绑定,包括Websockets、Android、iOS、React Native、Flutter、Java、Dart和Node.js等平台。EJDB2的Java绑定使得Java开发者能够轻松地在应用中集成嵌入式数据库功能,无需额外的数据库服务器。

EJDB2 Logo

二、环境搭建

2.1 Maven依赖配置

要在Java项目中使用EJDB2,首先需要在项目的pom.xml文件中添加EJDB2的依赖。以下是Maven配置示例:

<dependencies>
  <dependency>
    <groupId>softmotions</groupId>
    <artifactId>ejdb2</artifactId>
    <version>2.62.18</version>
  </dependency>
</dependencies>

<repositories>
  <repository>
    <id>repsy</id>
    <name>EJDB2 Maven Repositoty on Repsy</name>
    <url>https://repo.repsy.io/mvn/adamansky/softmotions</url>
  </repository>
</repositories>

2.2 项目结构

推荐的项目结构如下:

src/
├── main/
│   └── java/
│       └── com/
│           └── yourpackage/
│               └── YourMainClass.java
└── pom.xml

三、EJDB2核心API

EJDB2 Java绑定的核心类位于com.softmotions.ejdb2包中,主要包括以下几个类:

  • EJDB2:数据库连接类,提供CRUD操作方法
  • EJDB2Builder:数据库连接构建器,用于配置和打开数据库
  • JQL:查询类,用于执行JQL查询
  • JSON:JSON处理工具类

3.1 数据库连接

使用EJDB2Builder类可以轻松创建和配置数据库连接:

try (EJDB2 db = new EJDB2Builder("example.db").open()) {
    // 数据库操作代码
}

3.2 基本CRUD操作

EJDB2提供了简洁的API来执行CRUD操作:

  • 创建:使用put()方法插入文档
  • 读取:使用getAsJSON()getAsString()等方法获取文档
  • 更新:使用patch()patchOrPut()方法更新文档
  • 删除:使用del()方法删除文档

四、完整CRUD操作示例

下面我们通过一个完整的示例来演示EJDB2的CRUD操作。

4.1 插入数据

使用put()方法可以向指定集合中插入JSON文档:

// 插入文档,自动生成ID
long id = db.put("parrots", "{\"name\":\"Bianca\", \"age\": 4}");
System.out.println("插入文档ID: " + id);

// 插入文档,指定ID
id = db.put("parrots", "{\"name\":\"Darko\", \"age\": 8}", 1001);
System.out.println("插入文档ID: " + id);

4.2 查询数据

使用createQuery()方法创建查询,然后执行查询:

// 查询年龄大于3的鹦鹉
db.createQuery("@parrots/[age > :age]")
  .setLong("age", 3)
  .execute((doc) -> {
      System.out.println("查询结果: " + doc);
      return 1; // 继续处理下一个结果
  });

4.3 更新数据

使用patch()方法可以部分更新文档:

// 使用JSON Patch更新文档
db.patch("parrots", "[{\"op\":\"replace\", \"path\":\"/age\", \"value\":5}]", id);

// 如果文档不存在则插入
db.patchOrPut("parrots", "{\"name\":\"Mia\", \"age\": 2}", 1002);

4.4 删除数据

使用del()方法删除指定文档:

// 删除指定ID的文档
db.del("parrots", id);

五、高级功能

5.1 索引管理

EJDB2支持创建不同类型的索引来提高查询性能:

// 创建字符串索引
db.ensureStringIndex("parrots", "/name", true); // 唯一索引

// 创建整数索引
db.ensureIntIndex("parrots", "/age", false); // 非唯一索引

5.2 数据库信息

可以通过infoAsJSON()方法获取数据库的元信息:

JSON info = db.infoAsJSON();
System.out.println("数据库信息: " + info);

5.3 事务管理

EJDB2支持事务操作,确保数据的一致性:

try {
    db.begin();
    // 执行多个操作
    db.put("parrots", "{\"name\":\"Charlie\", \"age\": 3}");
    db.put("parrots", "{\"name\":\"Daisy\", \"age\": 5}");
    db.commit();
} catch (EJDB2Exception e) {
    db.rollback();
    e.printStackTrace();
}

六、完整示例代码

以下是一个完整的EJDB2 Java示例:

import com.softmotions.ejdb2.EJDB2;
import com.softmotions.ejdb2.EJDB2Builder;
import com.softmotions.ejdb2.EJDB2Exception;
import com.softmotions.ejdb2.JSON;

public class EJDB2Example {
    public static void main(String[] args) {
        try (EJDB2 db = new EJDB2Builder("example.db").truncate().open()) {
            // 创建索引
            db.ensureStringIndex("parrots", "/name", true);
            db.ensureIntIndex("parrots", "/age", false);
            
            // 插入数据
            long id1 = db.put("parrots", "{\"name\":\"Bianca\", \"age\": 4}");
            long id2 = db.put("parrots", "{\"name\":\"Darko\", \"age\": 8}");
            System.out.println("插入文档ID: " + id1 + ", " + id2);
            
            // 查询数据
            System.out.println("\n查询年龄大于3的鹦鹉:");
            db.createQuery("@parrots/[age > :age]")
              .setLong("age", 3)
              .execute((doc) -> {
                  System.out.println(doc);
                  return 1;
              });
            
            // 更新数据
            db.patch("parrots", "[{\"op\":\"replace\", \"path\":\"/age\", \"value\":5}]", id1);
            System.out.println("\n更新后Bianca的信息: " + db.getAsJSON("parrots", id1));
            
            // 删除数据
            db.del("parrots", id2);
            System.out.println("\n删除Darko后查询:");
            db.createQuery("@parrots/[]")
              .execute((doc) -> {
                  System.out.println(doc);
                  return 1;
              });
            
            // 数据库信息
            System.out.println("\n数据库信息: " + db.infoAsJSON());
            
        } catch (EJDB2Exception e) {
            e.printStackTrace();
        }
    }
}

七、总结

通过本教程,我们学习了如何在Java项目中使用EJDB2嵌入式JSON数据库。从环境搭建到完整的CRUD操作,EJDB2提供了简洁而强大的API,使得本地数据存储变得简单高效。无论是移动应用还是桌面应用,EJDB2都是一个值得考虑的轻量级数据库解决方案。

如果你想深入了解更多EJDB2的高级功能,可以参考官方提供的Java API文档和示例代码,进一步探索这个强大的嵌入式数据库的潜力。

【免费下载链接】ejdb :snowboarder: EJDB2 — Embeddable JSON Database engine C library. Simple XPath like query language (JQL). Websockets / Android / iOS / React Native / Flutter / Java / Dart / Node.js bindings. Docker image. 【免费下载链接】ejdb 项目地址: https://gitcode.com/gh_mirrors/ej/ejdb

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐