`
zhangdaiscott
  • 浏览: 429224 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
8fb25857-16b4-3681-ab5e-e319f45c42a8
Jeecg快速开发平台
浏览量:0
文章分类
社区版块
存档分类

模仿mongodb采用xml+json实现小型数据库

阅读更多

mini-mongodb

   模仿mongodb采用Xml+json实现小型数据库;
    1.实现数据库创建
    2.表的创建
    3.表数据的增、删、改、查

    供大家参考学习使用,有助于更好的了解MongoDB的实现原理!
代码下载地址: http://zhangdaiscott.github.io/mini-mogodb


   package org.jeecgframework;


import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;


import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.output.XMLOutputter;


import com.google.gson.Gson;


public class MiniMogodb {
private static final String _uuid = "_uuid";


/**
 * 获取表的全部数据
 * 
 * @param path
 * @param tablename
 * @return
 * @throws Exception
 */
public List<Map> loadTableDatas(String path, String tablename) throws Exception {
Gson gson = new Gson();
FileInputStream file = new FileInputStream(path);
SAXBuilder saxBuilder = new SAXBuilder();
Document document = saxBuilder.build(file);
Element root = document.getRootElement();


List<Map> l = new ArrayList();
List<Element> list = root.getChildren();
for (Element x : list) {
if (x.getAttributeValue("name").equals(tablename)) {
List<Element> al = x.getChildren();
for (Element s : al) {
String data = s.getText();
if (data == null) {
break;
}
Map mp = gson.fromJson(data, Map.class);
l.add(mp);
}
}
}
return l;
}


/**
 * 表插入数据
 * 
 * @param path
 * @param tablename
 * @param po
 * @return
 * @throws JDOMException
 * @throws IOException
 */
public boolean addData(String path, String tablename, Object po)
throws JDOMException, IOException {
Gson gson = new Gson();
boolean flag = false;
FileInputStream file = new FileInputStream(path);
SAXBuilder saxBuilder = new SAXBuilder();
Document document = saxBuilder.build(file);
Element root = document.getRootElement();


List<Element> list = root.getChildren();
for (Element x : list) {
if (x.getAttributeValue("name").equals(tablename)) {
Map base = new HashMap();
base.put(_uuid, UUID.randomUUID().toString());
Element data = new Element("data");
String json = gson.toJson(po);
Map mp = gson.fromJson(json, Map.class);
base.putAll(mp);
data.addContent(gson.toJson(base));
x.addContent(data);
}
}
XMLOutputter out = new XMLOutputter();
out.output(document, new FileOutputStream(path));
flag = true;
System.out
.println("----------insert --- data --- success----------------------");
return flag;
}


/**
 * 表修改数据
 * 
 * @param path
 * @param tablename
 * @param po
 * @throws JDOMException
 * @throws IOException
 */
public void updateData(String path, String tablename, Object po)
throws JDOMException, IOException {
FileInputStream file = new FileInputStream(path);
SAXBuilder saxBuilder = new SAXBuilder();
Document document = saxBuilder.build(file);
Element root = document.getRootElement();
Gson gson = new Gson();


List<Element> list = root.getChildren();
for (Element x : list) {
if (x.getAttributeValue("name").equals(tablename)) {
List<Element> al = x.getChildren();
for (Element s : al) {
// 如果定位Data[通过UUID唯一标示]
Map mp = gson.fromJson(s.getText(), Map.class);
Map newmp = gson.fromJson(gson.toJson(po), Map.class);
if (mp.get(_uuid).equals(newmp.get(_uuid))) {
mp.putAll(newmp);
Element data = new Element("data");
data.setText(gson.toJson(mp));
x.removeContent(s);
x.addContent(data);
break;
}
}
}
}
XMLOutputter out = new XMLOutputter();
out.output(document, new FileOutputStream(path));
System.out
.println("----------update --- data --- success----------------------");
}


/**
 * 表删除数据
 * 
 * @param path
 * @param tablename
 * @param po
 * @throws JDOMException
 * @throws IOException
 */
public void deleteData(String path, String tablename, Object po)
throws JDOMException, IOException {
FileInputStream file = new FileInputStream(path);
Gson gson = new Gson();
SAXBuilder saxBuilder = new SAXBuilder();
Document document = saxBuilder.build(file);
Element root = document.getRootElement();
List<Element> list = root.getChildren();
for (Element x : list) {
List<Element> al = x.getChildren();
if (x.getAttributeValue("name").equals(tablename)) {
for (Element s : al) {
// 如果定位Data[通过UUID唯一标示]
Map mp = gson.fromJson(s.getText(), Map.class);
Map newmp = gson.fromJson(gson.toJson(po), Map.class);
if (mp.get(_uuid).equals(newmp.get(_uuid))) {
x.removeContent(s);
break;
}
}
}
}
XMLOutputter out = new XMLOutputter();
out.output(document, new FileOutputStream(path));
System.out
.println("----------delete --- data --- success----------------------");
}


/**
 * 创建数据库
 * 
 * @param path
 * @throws Exception
 */
public void createDataBase(String path) throws Exception {
FileOutputStream file1 = new FileOutputStream(path);
Document document = new Document();
Element root = new Element("database");
Element sort1 = new Element("table");
sort1.setAttribute("name", "test");
Element sort2 = new Element("table");
sort2.setAttribute("name", "system.indexs");
Element sort3 = new Element("table");
sort3.setAttribute("name", "system.users");


root.addContent(sort1);
root.addContent(sort2);
root.addContent(sort3);


document.setRootElement(root);
XMLOutputter out = new XMLOutputter();
out.output(document, file1);
System.out
.println("----------create---database---success-------------------");
}
}


 

   * 作者:     张代浩
   * 技术论坛:[www.jeecg.org](http://www.jeecg.org)
   * 邮箱:  jeecg@sina.com
   * 交流群:325978980,143858350
分享到:
评论

相关推荐

    nodejs+express+mongodb+bootstrap+jquery+ejs写的电影demo

    标题中的“nodejs+express+mongodb+bootstrap+jquery+ejs写的电影demo”表明这是一个使用Node.js、Express框架、MongoDB数据库、Bootstrap前端框架、jQuery库以及EJS模板引擎开发的电影相关的应用程序示例。...

    Mina+Mongodb+Mybatis+数据库连接池实例

    "Mina+Mongodb+Mybatis+数据库连接池实例" 这个标题表明,我们将讨论一个具体的项目实例,它结合了多种技术,包括Mina(一个用于构建高性能、高可用性的网络应用程序的Java框架)、MongoDB(一个流行的NoSQL数据库...

    springboot整合mongodb+redis+mybatis+mysql

    6. **Mapper 接口和 XML 文件**:定义数据库操作的 SQL 语句。 7. **Service 类**:业务逻辑层,调用 DAO 层的方法进行数据操作。 8. **Controller 类**:处理 HTTP 请求,将数据传递给视图或直接返回 JSON 响应。 ...

    基于Vue+Nodejs+MongoDB实现的超市后台商品的订单管理系统代码+文档说明+数据库

    基于Vue+Nodejs+MongoDB实现的超市后台商品的订单管理系统代码+文档说明+数据库,含有代码注释,新手也可看懂,个人手打98分项目,导师非常认可的高分项目,毕业设计、期末大作业和课程设计高分必看,下载下来,简单...

    基于Vue+Nodejs+MongoDB实现的超市后台商品的订单管理系统+源代码+文档说明+数据库 .zip

    基于Vue+Nodejs+MongoDB实现的超市后台商品的订单管理系统+源代码+文档说明+数据库 .zip本资源中的源码都是经过本地编译过可运行的,评审分达到95分以上。资源项目的难度比较适中,内容都是经过助教老师审定过的能够...

    SpringBoot+MongoDB+Echarts图表数据可视化

    综上所述,"SpringBoot+MongoDB+Echarts图表数据可视化"项目利用SpringBoot作为后端处理逻辑,MongoDB作为数据存储,Echarts作为前端数据展示工具,共同实现了高效、直观的数据可视化解决方案。这个组合在现代Web...

    JSON+Support+in+PostgreSQL%2C+MySQL%2C+MongoDB%2C+and+SQL+Server.pdf

    由于其在Web前端的广泛使用,以及在API中的流行取代了XML,JSON已经迅速在各个数据库服务器中获得了重要地位。目前几乎所有的开发者都在使用JSON,这在数据库领域也不例外。 在本篇博客中,将讨论几个流行的数据库...

    Java 解析xml 存入mongodb 返回org.json json包

    总结来说,这个项目涉及了三个主要步骤:使用SAX解析XML文件,将解析得到的数据通过Java驱动存入MongoDB数据库,然后将MongoDB中的数据转换成org.json的JSON格式。这些步骤展示了Java在处理XML、数据库操作以及JSON...

    HRmanagement+MongoDB+js+express

    **MongoDB** MongoDB是一种基于分布式文件存储的开源数据库系统,设计用于处理大量数据并提供...总的来说,"HRmanagement+MongoDB+js+express"项目展示了如何使用这些技术栈来构建一个高效、灵活的人力资源管理系统。

    一个仿知乎论坛博客系统 mongodb+redis+vue.js

    【标题】"一个仿知乎论坛博客系统 mongodb+redis+vue.js"揭示了这个项目的核心技术栈,它是一个基于Web的论坛或博客系统,模仿了知名问答社区知乎的设计和功能。项目采用现代Web开发技术,包括数据库层的MongoDB,...

    spring+springmvc+mybatis+mongodb+ActiveMQ+CXF

    "spring+springmvc+mybatis+mongodb+ActiveMQ+CXF"就是一个典型的技术栈,它涵盖了后端开发、数据库管理、消息队列以及服务接口等多个关键领域。下面我们将详细探讨这些技术及其相互作用。 首先,Spring框架是Java...

    MongoDB入门教程 + 架构简析 + java使用MongoDB的简单程序

    MongoDB采用的是键值对存储方式,数据以JSON格式(BSON)存储,这使得数据的读写更加自然和高效。MongoDB支持丰富的查询语法,包括字段选择、条件操作、排序和分组,为开发者提供了极大的便利。同时,它还提供了副本...

    mongodb+spring+hibernate集成入门demo

    在这个"mongodb+spring+hibernate集成入门demo"中,我们将深入探讨如何将这三者有效地结合在一起,以构建一个强大的后端数据处理系统。 首先,MongoDB 是一个基于分布式文件存储的开源NoSQL数据库,它以JSON格式...

    mongoDB增删改查+前端页面实现+idea+themlesf+mybatis

    MongoDB是一种流行的开源文档型数据库,它以JSON格式存储数据,具有高性能、高可用性和可扩展性。在本项目中,我们将探讨如何使用MongoDB进行数据的增删改查操作,以及如何结合前端页面、IntelliJ IDEA开发环境、...

    php+mvc+mongodb数据库基本操作

    MongoDB则是一种分布式文档型数据库,以JSON格式存储数据,适合处理大量非结构化或半结构化数据。现在我们来详细探讨这些知识点。 首先,PHP的MVC架构是一种将业务逻辑、数据和用户界面分离的设计模式。在MVC模式中...

    mongodb+spring+maven环境搭建

    在“mongodb+springmvc+maven环境搭建”过程中,我们需要完成以下步骤: 1. **安装MongoDB**:首先,你需要下载并安装MongoDB服务器。根据操作系统(Windows、Linux或Mac)在MongoDB官网获取相应版本的安装包。安装...

    nodejs+mongodb+express+ejs+connect-mongo

    MongoDB 是一个流行的开源、非关系型数据库系统,它以JSON格式存储数据,非常适合处理结构灵活的数据。MongoDB 与 Node.js 结合使用,可以构建高性能、可扩展的数据库应用。 Express 是基于 Node.js 的一个web应用...

    MongoDB安装包+可视化工具

    MongoDB是一种流行的开源、分布式文档数据库,用于处理大量的结构化和非结构化数据。它以其灵活性、高性能和易用性而受到开发者的喜爱。在本压缩包中,包含MongoDB的安装包和一个可视化的图形用户界面(GUI)工具...

    express + mongodb + jquery + bootstrap 简单的后台管理系统.zip

    MongoDB是一个流行的文档型数据库,支持JSON格式的数据存储,具有良好的可扩展性和高性能。在本系统中,MongoDB用于存储和管理后台管理系统的数据,如用户信息、权限设置、系统配置等。它的灵活性使得数据结构可以...

    使用ts+nodejs+mongoDB+express+react编写的猫眼后台管理系统.zip

    MongoDB 是一个流行的 NoSQL 数据库,以 JSON 格式的文档存储数据。在猫眼后台管理系统中,MongoDB 存储了诸如电影信息、用户数据、订单记录等关键业务数据。其灵活性和高性能使得数据管理更加便捷。 **Express** ...

Global site tag (gtag.js) - Google Analytics