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

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

}



                
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值