您的位置:首页 > 数据库 > Mongodb

Java MongoDB 3.X 3.04 Crud 增删查改 deleteMany updateMany updateOne

2015-08-12 09:40 701 查看
User.java 类
package com.guoxin.mongodb.module;

public class User {
private String id;
private String title;
private String date;
private String content;

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public String getTitle() {
return title;
}

public void setTitle(String title) {
this.title = title;
}

public String getDate() {
return date;
}

public void setDate(String date) {
this.date = date;
}

public String getContent() {
return content;
}

public void setContent(String content) {
this.content = content;
}

}


 
MongoUtil.java 工具类

package com.guoxin.mongodb.utils;

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.Arrays;

import com.mongodb.MongoClient;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
import com.mongodb.client.MongoDatabase;

public class MongoUtil {
public static MongoUtil mongoUtil = null;
public static MongoClient mongoClient = null;
public static MongoDatabase mongoDataBase = null;

private MongoUtil() {
}

public static MongoUtil getInstance() {
if (mongoUtil == null) {
mongoUtil = new MongoUtil();
}
return mongoUtil;
}

public void init() {
mongoUtil.closeMongoClient();
mongoUtil.getMongoClient();
mongoUtil.getMongoDataBase();
}

private void getMongoClient() {
System.out.println("*********** getMongoClient***********");
try {
// 用户名 数据库 密码
MongoCredential credential = MongoCredential.createCredential(
"guoxin01", "guoxin", "123456".toCharArray());
// IP port
ServerAddress addr = new ServerAddress("192.168.1.137", 27017);
mongoClient = new MongoClient(addr, Arrays.asList(credential));
// 得到数据库
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

private void getMongoDataBase() {
System.out.println("*********** getMongoDataBase***********");
try {
if (mongoClient != null) {
// 得到数据库
mongoDataBase = mongoClient.getDatabase("guoxin");
} else {
throw new RuntimeException("MongoClient不能够为空");
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

public void closeMongoClient() {
System.out.println("*********** closeMongoClient***********");
if (mongoDataBase != null) {
mongoDataBase = null;
}
if (mongoClient != null) {
mongoClient.close();
}
}

/**
* 将实体类的obj的字段信息和内容动态放到mapParams里面
*
* @param mapParams
* @param obj
* @param method
*/
public void dymParms(Object mapParams, Object obj, String method) {
try {
if (obj != null) {
Field[] fields = obj.getClass().getDeclaredFields();
Class<?>[] arrClazz = new Class[2];
arrClazz[0] = String.class;
arrClazz[1] = Object.class;
Method m = mapParams.getClass().getDeclaredMethod(method,
arrClazz);
m.setAccessible(true);
if (fields != null) {
for (Field f : fields) {
f.setAccessible(true);
Object value = f.get(obj);
if (null!=value) {
Class<?> clazz = value.getClass();
Object[] strs = new Object[2];
if (clazz == String.class) {
if ( !"".equals(String.valueOf(value))) {
strs[0] = f.getName();
strs[1] = value;
m.invoke(mapParams, strs);
}
} else {
strs[0] = f.getName();
strs[1] = value;
m.invoke(mapParams, strs);
}
}
}
}
}
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}

[/code]
MongoDao.java Dao接口



package com.guoxin.mongodb.dao;

import com.mongodb.BasicDBObject;
import com.mongodb.MongoClient;
import com.mongodb.client.MongoDatabase;

/**
* Dao 层接口
*
* @author GuoXin
*
*/
public interface MongoDao {
/**
* Get Data BY ID
* @param db
* @param table
* @param Id
*/
public void queryByID(MongoDatabase db, String table, String Id);

/**
* Insert Data
* @param db
* @param table
* @param obj
*/
public void insert(MongoDatabase db, String table, Object obj);

/**
* Delete Data
* @param db
* @param table
* @param obj
*/
public void delete(MongoDatabase db, String table, Object obj);

/**
* Update Data
* @param db
* @param table
* @param conditions
* @param obj
*/
public void update(MongoDatabase db, String table, Object conditions,
Object obj);

}
MongoDaoImpl.java Dao实现类
package com.guoxin.mongodb.dao.impl;

import org.bson.Document;

import com.guoxin.mongodb.dao.MongoDao;
import com.guoxin.mongodb.utils.MongoUtil;
import com.mongodb.BasicDBObject;
import com.mongodb.DBCollection;
import com.mongodb.DBObject;
import com.mongodb.MapReduceCommand;
import com.mongodb.MapReduceOutput;
import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MapReduceIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
import com.mongodb.util.JSON;

/**
* Dao层实现类
* @author GuoXin
*
*/
public class MongoDaoImpl implements MongoDao {
@Override
public void queryByID(MongoDatabase db, String table,String Id) {
MongoCollection<Document> collection = db.getCollection(table);
BasicDBObject query = new BasicDBObject("id", Id);
FindIterable<Document> iterable = collection.find(query);
MongoCursor<Document> cursor = iterable.iterator();

while (cursor.hasNext()) {
Document user = cursor.next();
System.out.println(user.toJson());
}
cursor.close();
}

// test insert

@Override
public void insert(MongoDatabase db,String table,Object obj) {
MongoCollection<Document> collection = db.getCollection(table);
Document doc = new Document();
MongoUtil.getInstance().dymParms(doc, obj,"put");
collection.insertOne(doc);
FindIterable<Document> iterable = collection.find();
MongoCursor<Document> cursor = iterable.iterator();
while (cursor.hasNext()) {
Document user = cursor.next();
System.out.println(user.toString());
}

}

@Override
public void delete(MongoDatabase db,String table,Object obj) {
MongoCollection<Document> collection = db.getCollection(table);
BasicDBObject query = new BasicDBObject();
MongoUtil.getInstance().dymParms(query, obj, "append");
collection.deleteMany(query);
FindIterable<Document> iterable = collection.find();
MongoCursor<Document> cursor = iterable.iterator();
while (cursor.hasNext()) {
Document user = cursor.next();
System.out.println(user.toString());
}
}

@Override
public void update(MongoDatabase db,String table,Object conditions,Object obj) {
MongoCollection<Document> collection = db.getCollection(table);
BasicDBObject where = new BasicDBObject();
MongoUtil.getInstance().dymParms(where, conditions, "append");
BasicDBObject newContent = new BasicDBObject();
MongoUtil.getInstance().dymParms(newContent, obj, "append");
BasicDBObject update = new BasicDBObject("$set",newContent);
//updateMany updateOne
collection.updateMany(where, update);
FindIterable<Document> iterable = collection.find();
MongoCursor<Document> cursor = iterable.iterator();
while (cursor.hasNext()) {
Document user = cursor.next();
System.out.println(user.toString());
}
}

}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: