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();
}
}
}
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());
}
}
}