适用于java语言的MongoDB解决方案——Mongernate

闲暇之余,写了一个封装MongoDB数据库访问操作的小程序——Mongernate。
下面简单地介绍一下这个隔离层的特色:
1、业务层的编码人员不需要了解MongoDB的相关语法,即可对数据进行增删改查操作,进行常见开发;
2、支持json、xml和Map三种形式的增删改查方式。可根据项目情况自由选择(Map支持得还不够好)。
3、支持从配置文件dbConfig.properties读取配置信息
4、返回给业务层的所有数据均为java.util.Map形式。

下面是一段测试用例,有详尽的注释。

package com.skyedge.db;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;


/**
* 演示了Mongernate的使用方法。
*
* @author GaoGao
*
*/
public class TestCase {

/**
* @param args
*/
@SuppressWarnings("unchecked")
public static void main(String[] args) {
// TODO Auto-generated method stub
// 测试连接
System.out.println("=============test connection==============");
DBManager dm = new DBManager();
dm.connect();
// 指定数据库
dm.use("soccer");
// 测试json
System.out.println("=============test json==============");
// 插入5条数据
dm.insert("{'name':'Van Der Sar','no':1,'position':'GK'}", "manu");
dm.insert("{'name':'Wes Brown','no':6,'position':'RB'}", "manu");
dm.insert("{'name':'Micheal Owen','no':7,'position':'CF'}", "manu");
dm.insert("{'name':'Wayne Rooney','no':10,'position':'CF'}", "manu");
dm.insert("{'name':'Ryan Giggs','no':11,'position':'SS'}", "manu");
// 更改吉格斯的位置
dm.update("{'name':'Ryan Giggs'}", "{'$set':{'position':'LMF'}}",
"manu");
//删除范德萨
dm.delete("{'name':'Van Der Sar'}", "manu");
// 查找所有球员,返回的是一个iterator
Iterator<Map<String, Object>> it = dm.selectIterator("manu");
// 应当输出 布朗、欧文、鲁尼和吉格斯
while (it.hasNext()) {
System.out.println(it.next());
}
System.out.println("-------------------");
// 选择球衣号码大于6的球员, 返回一个数组
ArrayList<Map<String, Object>> arr = dm.selectArray("{'no':{'$gt':6}}",
"manu");
// 应当输出欧文(7号),鲁尼10号,和吉格斯11号
for (int i = 0; i < arr.size(); i++) {
System.out.println(arr.get(i).get("name"));
}


dm.dropTable("manu");


// 测试map
System.out.println("=============test map==============");
// 插入3条数据
Map m = new HashMap<String, Object>();
m.put("name", "Van Der Sar");
m.put("no", 1);
dm.insert(m, "manu");
m = new HashMap<String, Object>();
m.put("name", "Brown");
m.put("no", 6);
dm.insert(m, "manu");
m = new HashMap<String, Object>();
m.put("name", "Owen");
m.put("no", 8);
dm.insert(m, "manu");
// 将欧文改为吉格斯
Map m1 = new HashMap<String, Object>();
m1.put("name", "Giggs");
m1.put("no", 11);
dm.update(m, m1, "manu");
// 查询所有球员,返回一个iterator
it = dm.selectIterator("manu");
// 输出 范德萨、布朗和吉格斯
while (it.hasNext()) {
System.out.println(it.next());
}
System.out.println("-------------------");
// 查找球员吉格斯
arr = dm.selectArray(m1,
"manu");
// 输出吉格斯
for (int i = 0; i < arr.size(); i++) {
System.out.println(arr.get(i).get("name"));
}

dm.dropTable("manu");


// 测试 xml
System.out.println("=============test xml==============");
// 插入4条数据
dm.insertFromXml("<player><name>Anderson</name><no>8</no><position>AMF</position></player>", "manu");
dm.insertFromXml("<player><name>Evans</name><no>23</no><position>CB</position></player>", "manu");
dm.insertFromXml("<player><name>Carrick</name><no>16</no><position>CMF</position></player>", "manu");
dm.insertFromXml("<player><name>Evra</name><no>3</no><position>LB</position></player>", "manu");
// 把16号球员(卡里克)改为维迪奇
dm.updateFromXml("<no>16</no>", "<player><name>Vidic</name><no>15</no><position>CB</position></player>",
"manu");
//删除位置为AMF的球员(安德森)
dm.deleteFromXml("<position>AMF</position>", "manu");
// 查找所有的中卫,返回一个iterator
it = dm.selectIteratorFromXml("<position>CB</position>","manu");
// 应当输出维迪奇和埃文斯
while (it.hasNext()) {
System.out.println(it.next());
}
dm.dropTable("manu");
}

}



运行结果:

[img]http://dl.iteye.com/upload/attachment/238498/e3f1430e-b74a-32e7-9ad3-1490c3752c4c.png[/img]


附件中提供了测试用例的Eclipse工程。同时还附带了mongodb1.4的java driver和Mongernate的jar包。
因为源码写得很丑,过几天整理了之后,再发上来和大家共同讨论。
使用过程中遇到问题的,请站内信。谢谢你们。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值