学习初衷
- 用于满足自己的测试要求,不连接数据库,也不在意数据丢失
准备
- maven依赖
org.springframework.boot
spring-boot-starter-test
test
代码实现
- 内存数据库(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."); } } }
- 测试增删改查方法
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开发技能!