需要的jar包和安裝包:https://pan.baidu.com/s/1P6ZxuWFtKrTU7eRRV9OkAg 密碼: kf76
我用Robo 3T 1.1.1作爲MongoDB的GUI界面,有需要可以用,用cmd控制檯也行。
看看Robo 3T界面
失效給[email protected]發送郵件。
代碼需要一定的java基礎,泛型he
1.entity實體類
package entity; public class Emp { private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "Emp{" + "id=" + id + ", name='" + name + '\'' + '}'; } }
2.util 類(MongoDBUtil1封裝MongoDB操作,Bean2DBObject轉換對象)
package util; import com.mongodb.*; import java.beans.BeanInfo; import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.io.IOException; import java.io.InputStream; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Properties; public class MongoDBUtil1 { private static Mongo mongo = null; private MongoDBUtil1(){ super(); } private static String host; private static int port; private static String dbName; static { InputStream in = null; Properties prop = new Properties(); try{ if(in==null) in = MongoDBUtil1.class.getResourceAsStream("../MongoDB.properties"); prop.load(in); host = prop.getProperty("host"); port = Integer.parseInt(prop.getProperty("port")); dbName = prop.getProperty("dbName"); }catch (IOException e){ System.out.println("讀配置文件出錯"); e.printStackTrace(); }finally { System.out.println("讀配置文件end"); } } public static void insert(Object obj,String table){ if (mongo==null) mongo = new Mongo(host,port); try{ DB db = mongo.getDB(dbName); DBCollection dbCollection = db.getCollection(table); if (dbCollection==null) { DBObject dbObj = new BasicDBObject(); dbCollection = db.createCollection(table,dbObj); } dbCollection.insert(Bean2DBObject.bean2DBObject(obj)); }catch (Exception e){ System.out.println("插入出錯"); }finally { if (mongo!=null) mongo.close(); } } public static List find(Object obj,String table,String field) { if (mongo==null) mongo = new Mongo(host,port); try{ DB db = mongo.getDB(dbName); DBCollection dbCollection = db.getCollection(table); if (dbCollection==null) { DBObject dbObj = new BasicDBObject(); dbCollection = db.createCollection(table,dbObj); } BasicDBObject searchQuery = new BasicDBObject(); Object fieldValue=null; Class clazz=obj.getClass(); BeanInfo beanInfo= Introspector.getBeanInfo(clazz); PropertyDescriptor[] pds=beanInfo.getPropertyDescriptors(); for(PropertyDescriptor pd:pds){ if(pd.getName().equals(field)){ System.out.println(field+":"+pd.getReadMethod()); Method getter=pd.getReadMethod(); if (!getter.isAccessible()) getter.setAccessible(true); fieldValue = getter.invoke(obj); } } if (fieldValue==null) { return null; } else if (fieldValue instanceof Integer) { // 判斷變量的類型 int value = ((Integer) fieldValue).intValue(); searchQuery.put(field, value); } else if (fieldValue instanceof String) { String value = (String) fieldValue; searchQuery.put(field, value); } else if (fieldValue instanceof Double) { double value = ((Double) fieldValue).doubleValue(); searchQuery.put(field, value); } else if (fieldValue instanceof Float) { float value = ((Float) fieldValue).floatValue(); searchQuery.put(field, value); } else if (fieldValue instanceof Long) { long value = ((Long) fieldValue).longValue(); searchQuery.put(field, value); } else if (fieldValue instanceof Boolean) { boolean value = ((Boolean) fieldValue).booleanValue(); searchQuery.put(field, value); } else if (fieldValue instanceof Date) { Date value = (Date) fieldValue; searchQuery.put(field, value); } DBCursor cur = dbCollection.find(searchQuery); List<Object> results = new ArrayList<Object>(); while (cur.hasNext()){ results.add(cur.next()); } return results; }catch(Exception e){ e.printStackTrace(); }finally { if (mongo!=null) mongo.close(); } return null; } }
package util; import com.mongodb.BasicDBObject; import com.mongodb.DBObject; import java.lang.reflect.Field; import java.util.Date; public class Bean2DBObject { /** * 將實體Bean對象轉換爲DBObject */ public static <T> DBObject bean2DBObject(T bean) throws IllegalAccessException { if(bean == null) return null; DBObject dbObject = new BasicDBObject(); //獲得對象類的屬性域 Field[] fields = bean.getClass().getDeclaredFields(); for(Field field:fields){ //獲得變量屬性名 String varName = field.getName(); if(!field.isAccessible())field.setAccessible(true); Object param = field.get(bean); //System.out.println(param); if (param==null){ continue; }else if (param instanceof Integer) { // 判斷變量的類型 int value = ((Integer) param).intValue(); dbObject.put(varName, value); } else if (param instanceof String) { String value = (String) param; dbObject.put(varName, value); } else if (param instanceof Double) { double value = ((Double) param).doubleValue(); dbObject.put(varName, value); } else if (param instanceof Float) { float value = ((Float) param).floatValue(); dbObject.put(varName, value); } else if (param instanceof Long) { long value = ((Long) param).longValue(); dbObject.put(varName, value); } else if (param instanceof Boolean) { boolean value = ((Boolean) param).booleanValue(); dbObject.put(varName, value); } else if (param instanceof Date) { Date value = (Date) param; dbObject.put(varName, value); } } return dbObject; } }
package util; import com.mongodb.BasicDBObject; import com.mongodb.DBObject; import java.lang.reflect.Field; import java.util.Date; public class Bean2DBObject { /** * 將實體Bean對象轉換爲DBObject */ public static <T> DBObject bean2DBObject(T bean) throws IllegalAccessException { if(bean == null) return null; DBObject dbObject = new BasicDBObject(); //獲得對象類的屬性域 Field[] fields = bean.getClass().getDeclaredFields(); for(Field field:fields){ //獲得變量屬性名 String varName = field.getName(); if(!field.isAccessible())field.setAccessible(true); Object param = field.get(bean); //System.out.println(param); if (param==null){ continue; }else if (param instanceof Integer) { // 判斷變量的類型 int value = ((Integer) param).intValue(); dbObject.put(varName, value); } else if (param instanceof String) { String value = (String) param; dbObject.put(varName, value); } else if (param instanceof Double) { double value = ((Double) param).doubleValue(); dbObject.put(varName, value); } else if (param instanceof Float) { float value = ((Float) param).floatValue(); dbObject.put(varName, value); } else if (param instanceof Long) { long value = ((Long) param).longValue(); dbObject.put(varName, value); } else if (param instanceof Boolean) { boolean value = ((Boolean) param).booleanValue(); dbObject.put(varName, value); } else if (param instanceof Date) { Date value = (Date) param; dbObject.put(varName, value); } } return dbObject; } }
3.dao類
import entity.Emp; import java.util.List; public interface EmpDao { public void insert(Emp e); public List find(Emp e); public void update(Emp e); public void delete(Emp e); }
4.daoImpl實現類
package daoImpl; import dao.EmpDao; import entity.Emp; import util.MongoDBUtil1; import java.util.List; public class EmpDaoImpl implements EmpDao { @Override public void insert(Emp e) { MongoDBUtil1.insert(e,"emp"); System.out.println("插入完畢"); } @Override public List find(Emp e) { List<Emp> list = MongoDBUtil1.find(e,"emp","id"); return list; } @Override public void update(Emp e) { } @Override public void delete(Emp e) { } }
5.resources資源(MongoDB.properties)
host=localhost port=27017 dbName=ChatRoom
6.測試類
package test; import dao.EmpDao; import daoImpl.EmpDaoImpl; import entity.Emp; import org.junit.Test; public class TestDB1 { @Test public void test1() { Emp emp = new Emp(); emp.setId(1); emp.setName("donghui"); EmpDao dao = new EmpDaoImpl(); dao.insert(emp); } @Test public void test2() { Emp emp = new Emp(); emp.setId(1); emp.setName("donghui"); EmpDao dao = new EmpDaoImpl(); System.out.println(dao.find(emp)); } }