自己本地模拟内存数据库增删改查

简介: 自己本地模拟内存数据库增删改查

学习初衷

  • 用于满足自己的测试要求,不连接数据库,也不在意数据丢失

准备

  1. maven依赖

    org.springframework.boot
    spring-boot-starter-test
    test

代码实现

  1. 内存数据库(InMemoryDatabase)
  • 使用了单例模式,程序启动就创建
package com.kwan.springbootkwan.test.lykj;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class InMemoryDatabase {
    private static InMemoryDatabase instance;
    public final Map<String, HashMap<String, String>> database;
    private InMemoryDatabase() {
        this.database = new HashMap<>();
    }
    public static synchronized InMemoryDatabase getInstance() {
        if (instance == null) {
            instance = new InMemoryDatabase();
        }
        return instance;
    }
    public void insert(String tableName, String primaryKey, String data) throws JsonProcessingException {
        if (!database.containsKey(tableName)) {
            database.put(tableName, new HashMap<String,String>());
        }
        database.get(tableName).put(primaryKey, data);
    }
    public Object query(String tableName, String primaryKey, Class<?> clazz) throws JsonProcessingException {
        Set<String> tableSet = database.keySet();
        if (!tableSet.contains(tableName)) {
            return null;
        }
        String jsonData = database.get(tableName).get(primaryKey);
        if (jsonData == null) {
            return null;
        }
        ObjectMapper mapper = new ObjectMapper();
        return mapper.readValue(jsonData, clazz);
    }
    public String delete(String tableName, String primaryKey) {
        return database.get(tableName).remove(primaryKey);
    }
    public void update(String tableName, String primaryKey, String updatedJsonData) {
        Map<String, String> table = database.get(tableName);
        if (table != null) {
            table.put(primaryKey, updatedJsonData);
        } else {
            throw new IllegalArgumentException("Table " + tableName + " does not exist.");
        }
    }
}
  1. 测试增删改查方法
package com.kwan.springbootkwan.test.lykj.memorydb;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class InMemoryDatabase {
    private static InMemoryDatabase instance;
    public final Map<String, HashMap<String, String>> database;
    private InMemoryDatabase() {
        this.database = new HashMap<>();
    }
    public static synchronized InMemoryDatabase getInstance() {
        if (instance == null) {
            instance = new InMemoryDatabase();
        }
        return instance;
    }
    public void insert(String tableName, String primaryKey, String data) throws JsonProcessingException {
        if (!database.containsKey(tableName)) {
            database.put(tableName, new HashMap<String,String>());
        }
        database.get(tableName).put(primaryKey, data);
    }
    public Object query(String tableName, String primaryKey, Class<?> clazz) throws JsonProcessingException {
        Set<String> tableSet = database.keySet();
        if (!tableSet.contains(tableName)) {
            return null;
        }
        String jsonData = database.get(tableName).get(primaryKey);
        if (jsonData == null) {
            return null;
        }
        ObjectMapper mapper = new ObjectMapper();
        return mapper.readValue(jsonData, clazz);
    }
    public String delete(String tableName, String primaryKey) {
        return database.get(tableName).remove(primaryKey);
    }
    public void update(String tableName, String primaryKey, String updatedJsonData) {
        Map<String, String> table = database.get(tableName);
        if (table != null) {
            table.put(primaryKey, updatedJsonData);
        } else {
            throw new IllegalArgumentException("Table " + tableName + " does not exist.");
        }
    }
}

结果

感谢阅读

感谢您阅读 这篇文章,我们探索了自己本地模拟内存数据库增删改查

谢谢您的陪伴! 如果您有任何问题、建议或想要了解的特定主题,请随时在评论中告诉我们。我们期待与您共同探索java,共同提升我们的Java开发技能!

相关文章
|
2月前
|
SQL Java 数据库连接
java链接hive数据库实现增删改查操作
java链接hive数据库实现增删改查操作
191 0
|
2月前
|
SQL 数据库 索引
gorm普通的增删改查
gorm普通的增删改查
46 0
|
2月前
|
关系型数据库 MySQL 数据库
|
2月前
|
SQL 关系型数据库 MySQL
MySQL | 数据库的管理和操作【表的增删改查】(一)
MySQL | 数据库的管理和操作【表的增删改查】
|
2月前
|
SQL 关系型数据库 MySQL
MySQL | 数据库的管理和操作【表的增删改查】(二)
MySQL | 数据库的管理和操作【表的增删改查】(二)
|
2月前
|
SQL 关系型数据库 MySQL
mysql 数据库 增删改查 基本操作
mysql 数据库 增删改查 基本操作
|
2月前
|
小程序 数据库
一分钟教你学会小程序云开发的数据库的增删改查
本文简要介绍了小程序云开发中数据库的增删改查操作。首先展示了查询代码,通过`wx.cloud.database().collection().get()`获取数据;接着演示添加数据,强调数据字段需与数据库匹配;然后说明删除数据需基于_id,通过`doc(id).remove()`执行;最后,更新数据同样依赖_id,使用`doc(id).update()`进行修改。
26 1
|
26天前
|
关系型数据库 MySQL 数据库
mysql数据库表格的增删改查
mysql数据库表格的增删改查
|
2月前
|
API 数据库 Python
Python web框架fastapi数据库操作ORM(二)增删改查逻辑实现方法
Python web框架fastapi数据库操作ORM(二)增删改查逻辑实现方法
107 1
|
2月前
|
JavaScript 前端开发 API
node+vue3+mysql前后分离开发范式——实现对数据库表的增删改查
node+vue3+mysql前后分离开发范式——实现对数据库表的增删改查
70 1