首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Mongo的ORM框架的学习Morphia(十三)Mongo+spring调整

2012-09-08 
Mongo的ORM框架的学习Morphia(十三)Mongo+spring整合Spring和Mongo的扩展:package com.easyway.mongodb.ex

Mongo的ORM框架的学习Morphia(十三)Mongo+spring整合

Spring和Mongo的扩展:

package com.easyway.mongodb.ext;import java.util.ArrayList;import java.util.List;import org.springframework.beans.factory.BeanCreationException;import org.springframework.beans.factory.config.AbstractFactoryBean;import com.mongodb.Mongo;import com.mongodb.MongoOptions;import com.mongodb.ServerAddress;/** *  *  * 目前支持的配置方式  *  * <bean id="mongoOne" name="mongoDef" + addr);}else if(a.length == 2) {replicaSetSeeds.add(new ServerAddress(host, Integer.parseInt(a[1])));}else{replicaSetSeeds.add(new ServerAddress(host));}}} catch (Exception e) {throw new BeanCreationException("Error while creating replicaSetAddresses",e);}}public void setAddress(String serverAddress) {replSeeds(serverAddress);}}

?

package com.easyway.mongodb.ext;import java.lang.reflect.Field;import java.util.HashMap;import java.util.Map;/** *  * @Title: TODO * @Description: 实现TODO * @Copyright:Copyright (c) 2011 * @Company:易程科技股份有限公司 * @Date:2012-3-3 * @author  * @version 1.0 */public class ReflectUtils {/** * 将bean 对象转换为Map * @param bean * @return */public static Map<String,Object> bean2Map(Object bean){Class<?> clazz=bean.getClass();        Map<String,Object> paramMap=new HashMap<String,Object>();Field[] fileds=clazz.getDeclaredFields();if(fileds!=null){for (Field field : fileds) {boolean flag=field.isAccessible();try {if(!flag){field.setAccessible(true);}Object value=field.get(bean);paramMap.put(field.getName(), value);} catch (IllegalArgumentException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();}finally{field.setAccessible(flag);}}}return paramMap;}}

?

?

spring配置如下:

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jdbc="http://www.springframework.org/schema/jdbc"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="             http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd             http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd             http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd             http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd             http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"default-autowire="byName"><!-- 导入属性配置文件 --><beanfactory-bean="mongofactoryBean" factory-method="getDB">      <constructor-arg index="0">         <value>${mongo.db.databaseName}</value>      </constructor-arg>   </bean>  <bean id="hotelDAO"  name="code">mongo.db.host=localhost:27017#mongo.db.host=123.123.101.4#mongo.db.host=123.123.101.5#mongo.db.host=10.228.15.10#mongo.db.host=192.168.73.149#mongo.db.host=192.168.73.176mongo.db.databaseName=hotelmongo.db.connectionsPerHost=133

?

Model:

package com.easyway.mongodb.model;/** *  * @Title: TODO * @Description: 实现TODO * @Copyright:Copyright (c) 2011 * @Company:易程科技股份有限公司 * @Date:2012-3-3 * @author  * @version 1.0 */public class Hotel {private String hotelName;private double money;public String getHotelName() {return hotelName;}public void setHotelName(String hotelName) {this.hotelName = hotelName;}public double getMoney() {return money;}public void setMoney(double money) {this.money = money;}}

?

?

DAO层:

package com.easyway.mongodb.dao;import java.util.List;import java.util.Map;import com.easyway.mongodb.ext.MongoFactoryBean;import com.mongodb.DB;import com.mongodb.DBCursor;import com.mongodb.DBObject;import com.mongodb.DBRef;/** *  * @Title: TODO * @Description: 实现TODO * @Copyright:Copyright (c) 2011 * @Company:易程科技股份有限公司 * @Date:2012-3-3 * @author  * @version 1.0 */public interface DAO<T, K> {public abstract String getCollectionName();public abstract void setCollectionName(String collectionName);public abstract DB getDB();public abstract DBRef getDBRef(String collectionName, String id);/** * 基本查询方法 * @param collectionName 查询表集合名 * @param condMap 查询条件 * @return DBCursor 结果集 */public abstract DBCursor find(String collectionName,Map<String, Object> condMap);public abstract DBCursor find(String collectionName,Map<String, Object> condMap, boolean isFindNormalStatus);/** * 基本查询方法BYID * @param collectionName 查询表集合名 * @param condMap 查询条件 * @return DBCursor 结果集 */public abstract DBObject findBYID(String collectionName,Map<String, Object> condMap);/** * 基本增加方法 * @param collectionName 表集合名 * @param fieldMap 字段值 * @return id字符串 */public abstract void add(String collectionName, Map<String, Object> fieldMap);public abstract void add(String collectionName, DBObject obj);/** * 基本删除方法 * @param collectionName 表集合名 * @param condMap 删除条件 * @return */public abstract boolean remove(String collectionName,Map<String, Object> condMap);public abstract boolean remove(String collectionName, DBObject cond);public abstract boolean removeIn(String collectionName,Map<String, Object[]> condMap);/** * 基本更新方法 * @param collectionName 表集合名 * @param id _id值 * @param fieldMap 字段值 * @return 0--修改成功   1--数据库中无此记录,修改失败 */public abstract int update(String collectionName, String id,Map<String, Object> fieldMap);/** * 基本更新方法 * @param collectionName 表集合名 * @param id _id值 * @param fieldMap * @param isUpdateModifyTime 是否修改Constants.Field_all_MODIFYTIME字段,true为修改,false为不修改 * @return  0--修改成功   1--数据库中无此记录,修改失败 */public abstract int update(String collectionName, String id,Map<String, Object> fieldMap, boolean isUpdateModifyTime);/** * 根据主键获得一个实例 * @param collectionName * @param id * @return */public abstract DBObject findOne(String collectionName, String id);public abstract DBObject findOne(String collectionName, String id,boolean isFindNormalStatus);/** * 统计表数据数 * @param collectionName * @param condMap * @return */public abstract long count(String collectionName,Map<String, Object> condMap);/** * @param collectionName * @param condMap * @return */public abstract DBCursor find(String collectionName,Map<String, Object[]> inCondMap, Map<String, Object> queryMap,Map<String, Object> startEndTimeFieldNameMap);public abstract DBCursor find(String collectionName,Map<String, Object[]> inCondMap, Map<String, Object> queryMap,Map<String, Object> startEndTimeFieldNameMap, boolean isFindStatus);/** * 多字段“in”条件组合查询  * @param collectionName * @param condMap * @return */public abstract DBCursor findIn(String collectionName,Map<String, Object[]> condMap);/** * 多字段“in”条件组合查询  * @param collectionName * @param condMap * @return */public abstract DBCursor findIn(String collectionName,Map<String, Object[]> inCondMap, Map<String, Object> queryMap,Map<String, Object> pageInfo);/** * 多字段“in”条件组合查询 的统计数 * @param collectionName * @param condMap * @return */public abstract long findIn(String collectionName,Map<String, Object[]> inCondMap, Map<String, Object> queryMap);/** * 多条件分页查询 * @param collectionName * @param condMap 存储:查询条件BasicDBObject,Key=query与分页实例PageInfo,Key=pageInfo * @return */public abstract DBCursor findPage(String collectionName,Map<String, Object> condMap);public abstract DBObject DBRefToDBObject(DBRef ref);public abstract List<DBObject> DBRefDBObject(List<DBRef> refList);public abstract DBObject getQueryCodeByStartTimeAndEndTime(long startTime,long endTime);/** * 去掉重复的引用 * @param list * @return */public abstract List<DBRef> removeRepeat(List<DBRef> list);public abstract List<String> removeRepeatString(List<String> list);/** * 删除指定的引用 * @param list * @param removeId * @return */public abstract List<DBRef> removeRef(List<DBRef> list, String removeId);/** * 保存从数据库里查出来的DBObject,经修改后的保存 * @param collectionName * @param obj */public abstract void save(String collectionName, DBObject obj);public abstract void save(String collectionName, DBObject obj,boolean isUpdateModifyTime);/** * 是否存在该对象 * @param collectionName * @param id * @return */public abstract boolean hasDBObject(String collectionName, String id,boolean isFindNormalStatus);/** * 是否存在该对象 * @param collectionName * @param id * @return */public abstract boolean hasDBObject(String collectionName, String id);/** * 是否存在改对象 * @param collectionName * @param id * @param cond * @return */public abstract boolean hasDBObject(String collectionName, String id,Map<String, Object> cond);/** * 是否存在改对象 * @param collectionName * @param id * @param cond * @return */public abstract boolean hasDBObject(String collectionName, String id,Map<String, Object> cond, boolean isFindNormalStatus);public abstract boolean hasDBObject(String collectionName,Map<String, Object> cond);public abstract boolean hasDBObject(String collectionName,Map<String, Object> cond, boolean isOne);public abstract List<DBRef> ObjectToListDBRef(String collectionName,Object obj);public abstract List<DBRef> ObjectToListDBRef(Object obj);public abstract DBRef ObjectToDBRef(Object obj);public abstract DBRef ObjectToDBRef(String collectionName, Object obj);public abstract String[] DBRefListToStringArr(List<DBRef> refList);public abstract List<DBRef> DBObjectListToDBRefList(List<DBObject> list,String collectionName);public abstract boolean isDBObjectList(Object obj);/** * 将object转化为List<DBObject> * @param obj * @return */public abstract List<DBObject> objectToListDBObject(Object obj);public abstract DBObject objectToDBObject(Object obj);}

?

?

package com.easyway.mongodb.dao;
import java.lang.reflect.ParameterizedType;import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;
import org.apache.log4j.Logger;import org.bson.types.ObjectId;
import com.mongodb.BasicDBObject;import com.mongodb.DB;import com.mongodb.DBCollection;import com.mongodb.DBCursor;import com.mongodb.DBObject;import com.mongodb.DBRef;import com.mongodb.QueryOperators;
/**?* 对Mongo数据库表集合的基本操作?* ?* @Title: TODO?* @Description: 实现TODO?* @Copyright:Copyright (c) 2011?* @Company:易程科技股份有限公司?* @Date:2012-3-3?* @author ?* @version 1.0?*/@SuppressWarnings({ "unchecked", "rawtypes" })public class BasicDAO<T,K> implements DAO<T, K>? {??private Logger logger = Logger.getLogger(this.getClass());???private DB mongodb;?
?public DB getMongodb() {??return mongodb;?}
?public void setMongodb(DB mongodb) {??this.mongodb = mongodb;?}?private? String collectionName;??public BasicDAO(){??initType(((Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0]));?? }
?protected void initType(Class<T> type) {??collectionName=type.getSimpleName();???}????/* (non-Javadoc)? * @see com.easyway.mongodb.dao.DAO#getCollectionName()? */?@Override?public String getCollectionName() {??return collectionName;?}?/* (non-Javadoc)? * @see com.easyway.mongodb.dao.DAO#setCollectionName(java.lang.String)? */?@Override?public void setCollectionName(String collectionName) {??this.collectionName = collectionName;?}
?@Override?public DB getDB() {??return mongodb;?}
?/* (non-Javadoc)? * @see com.easyway.mongodb.dao.DAO#getDBRef(java.lang.String, java.lang.String)? */?@Override?public DBRef getDBRef(String collectionName,String id){??try {???return new DBRef(getDB(),collectionName,new ObjectId(id));??} catch (Exception e) {???this.logger.error("======获得引用错误,由id错误引起的,error:"+id);??}??return null;?}??/* (non-Javadoc)? * @see com.easyway.mongodb.dao.DAO#find(java.lang.String, java.util.Map)? */?@Override?public DBCursor find(String collectionName,Map<String,Object> condMap){??return this.find(collectionName,condMap,true);?}?/* (non-Javadoc)? * @see com.easyway.mongodb.dao.DAO#find(java.lang.String, java.util.Map, boolean)? */?@Override?public DBCursor find(String collectionName,Map<String,Object> condMap,boolean isFindNormalStatus){??DB db=getDB();??DBCollection coll=db.getCollection(collectionName);??DBCursor cur=null;??if(condMap==null||condMap.size()==0){???cur=coll.find();??}else{???DBObject cond=new BasicDBObject();???if(condMap.get("_id") != null) {????try{?????condMap.put("_id", new ObjectId(condMap.get("tableName").toString()));????}catch (Exception e) {?????return null;????}???}???cond.putAll(condMap);???cur=coll.find(cond);??}??return cur;?}??/* (non-Javadoc)? * @see com.easyway.mongodb.dao.DAO#findBYID(java.lang.String, java.util.Map)? */?@Override?public DBObject findBYID(String collectionName,Map<String,Object> condMap){??DB db = getDB();??DBCollection coll = db.getCollection(collectionName);??String id = (String)condMap.get("_id");??if(id==null)return null;??DBObject cond = new BasicDBObject();??try {???cond.put("_id", new ObjectId(id));??} catch (Exception e) {???return null;??}??DBObject obj = coll.findOne(cond);??if(obj != null) {???return obj;??}??return null;?}??/* (non-Javadoc)? * @see com.easyway.mongodb.dao.DAO#add(java.lang.String, java.util.Map)? */?@Override?public void add(String collectionName,Map<String,Object> fieldMap){??DBObject row=new BasicDBObject();??row.putAll(fieldMap);??add(collectionName, row);?}?/* (non-Javadoc)? * @see com.easyway.mongodb.dao.DAO#add(java.lang.String, com.mongodb.DBObject)? */?@Override?public void add(String collectionName,DBObject obj){??DB db=getDB();??DBCollection coll=db.getCollection(collectionName);??coll.save(obj);?}???/* (non-Javadoc)? * @see com.easyway.mongodb.dao.DAO#remove(java.lang.String, java.util.Map)? */?@Override?public boolean remove(String collectionName,Map<String,Object> condMap){??DB db=getDB();??DBCollection coll=db.getCollection(collectionName);??DBObject cond=new BasicDBObject();??cond.putAll(condMap);??coll.remove(cond);??return true;?}?/* (non-Javadoc)? * @see com.easyway.mongodb.dao.DAO#remove(java.lang.String, com.mongodb.DBObject)? */?@Override?public boolean remove(String collectionName,DBObject cond){??DB db=getDB();??DBCollection coll=db.getCollection(collectionName);??coll.remove(cond);??return true;?}?/* (non-Javadoc)? * @see com.easyway.mongodb.dao.DAO#removeIn(java.lang.String, java.util.Map)? */?@Override?public boolean removeIn(String collectionName,Map<String,Object[]> condMap){??DB db=getDB();??DBCollection coll=db.getCollection(collectionName);??BasicDBObject query = new BasicDBObject();??Iterator<String> _keys = condMap.keySet().iterator();??????????? //条件查询??while(_keys.hasNext()){???String _key = _keys.next();???BasicDBObject in = new BasicDBObject();???in.put(com.mongodb.QueryOperators.IN, condMap.get(_key));???if(query.size() == 0){????????query.put(_key, in);???}else{????query.append(_key, in);???}?????}??coll.remove(query);??return true;?}??/* (non-Javadoc)? * @see com.easyway.mongodb.dao.DAO#update(java.lang.String, java.lang.String, java.util.Map)? */?@Override?public int update(String collectionName,String id,Map<String,Object> fieldMap){??return this.update(collectionName, id, fieldMap,true);?}?/* (non-Javadoc)? * @see com.easyway.mongodb.dao.DAO#update(java.lang.String, java.lang.String, java.util.Map, boolean)? */?@Override?public int update(String collectionName,String id,Map<String,Object> fieldMap,boolean isUpdateModifyTime){??DB db=getDB();??DBCollection coll=db.getCollection(collectionName);??BasicDBObject cond=new BasicDBObject();??try {???cond.put("_id", new ObjectId(id));??} catch (Exception e) {???return 1;??}??DBObject q=coll.findOne(cond);??if(q==null)return 1;??BasicDBObject o=new BasicDBObject();??if(fieldMap.containsKey("_id"))fieldMap.remove("_id");??Map oldMap=q.toMap();??oldMap.putAll(fieldMap);??o.putAll(oldMap);//要把原先的记录值也要加进来,否则更新后就只有fieldMap里的字段了??coll.update(q, o);??return 0;??}??/* (non-Javadoc)? * @see com.easyway.mongodb.dao.DAO#findOne(java.lang.String, java.lang.String)? */?@Override?public DBObject? findOne(String collectionName,String id){??return this.findOne(collectionName, id, true);?}?/* (non-Javadoc)? * @see com.easyway.mongodb.dao.DAO#findOne(java.lang.String, java.lang.String, boolean)? */?@Override?public DBObject? findOne(String collectionName,String id, boolean isFindNormalStatus){??DB db=getDB();??DBCollection coll=db.getCollection(collectionName);??BasicDBObject cond=new BasicDBObject();??try {???cond.put("_id", new ObjectId(id));??} catch (Exception e) {???return null;??}??DBObject q =coll.findOne(cond);??return q;?}??/* (non-Javadoc)? * @see com.easyway.mongodb.dao.DAO#count(java.lang.String, java.util.Map)? */?@Override?public long count(String collectionName,Map<String,Object> condMap){??DB db=getDB();??DBCollection coll=db.getCollection(collectionName);??if(condMap==null||condMap.size()==0){???return coll.count();??}else{???DBObject cond=new BasicDBObject(condMap);???return coll.count(cond);??}?}??/* (non-Javadoc)? * @see com.easyway.mongodb.dao.DAO#find(java.lang.String, java.util.Map, java.util.Map, java.util.Map)? */?@Override?public DBCursor find(String collectionName,Map<String,Object[]> inCondMap,Map<String,Object> queryMap,Map<String,Object> startEndTimeFieldNameMap){??return this.find(collectionName, inCondMap, queryMap, startEndTimeFieldNameMap,true);?}?/* (non-Javadoc)? * @see com.easyway.mongodb.dao.DAO#find(java.lang.String, java.util.Map, java.util.Map, java.util.Map, boolean)? */?@Override?public DBCursor find(String collectionName,Map<String,Object[]> inCondMap,Map<String,Object> queryMap,Map<String,Object> startEndTimeFieldNameMap,boolean isFindStatus){??DB db = getDB();??DBCollection coll = db.getCollection(collectionName);??BasicDBObject query = new BasicDBObject();??if(inCondMap!=null){???Iterator<String> _keys = inCondMap.keySet().iterator();???????????? //条件查询???while(_keys.hasNext()){????String _key = _keys.next().toString();????BasicDBObject in = new BasicDBObject();????in.put(com.mongodb.QueryOperators.IN, inCondMap.get(_key));????if(query.size() == 0){?????query.put(_key, in);????}else{?????query.append(_key, in);????}???}??}??if(queryMap!=null){???query.putAll(queryMap);??}??DBCursor cur = coll.find(query);??return cur;?}??/* (non-Javadoc)? * @see com.easyway.mongodb.dao.DAO#findIn(java.lang.String, java.util.Map)? */?@Override?public DBCursor findIn(String collectionName,Map<String,Object[]> condMap){??DB db = getDB();??DBCollection coll = db.getCollection(collectionName);??BasicDBObject query = new BasicDBObject();??Iterator<String> _keys = condMap.keySet().iterator();??????????? //条件查询??while(_keys.hasNext()){???String _key = _keys.next().toString();???BasicDBObject in = new BasicDBObject();???in.put(com.mongodb.QueryOperators.IN, condMap.get(_key));???if(query.size() == 0){????????query.put(_key, in);???}else{????query.append(_key, in);???}?????}??DBCursor cur = coll.find(query);??return cur;?}??/* (non-Javadoc)? * @see com.easyway.mongodb.dao.DAO#findIn(java.lang.String, java.util.Map, java.util.Map, java.util.Map)? */?@Override?public DBCursor findIn(String collectionName,Map<String,Object[]> inCondMap,Map<String,Object> queryMap,Map<String,Object> pageInfo){??DB db = getDB();??DBCollection coll = db.getCollection(collectionName);??BasicDBObject query = new BasicDBObject();??Iterator<String> _keys = inCondMap.keySet().iterator();??????????? //条件查询??while(_keys.hasNext()){???String _key = _keys.next().toString();???BasicDBObject in = new BasicDBObject();???in.put(com.mongodb.QueryOperators.IN, inCondMap.get(_key));???if(query.size() == 0){????query.put(_key, in);???}else{????query.append(_key, in);???}??}??if(queryMap!=null){???query.putAll(queryMap);??}??DBCursor cur = coll.find(query);??System.out.println("count==" + cur.count());??return cur;?}??/* (non-Javadoc)? * @see com.easyway.mongodb.dao.DAO#findIn(java.lang.String, java.util.Map, java.util.Map)? */?@Override?public long findIn(String collectionName,Map<String,Object[]> inCondMap,Map<String,Object> queryMap){??DB db = getDB();??DBCollection coll = db.getCollection(collectionName);??BasicDBObject query = new BasicDBObject();??Iterator<String> _keys = inCondMap.keySet().iterator();??????????? //条件查询??while(_keys.hasNext()){???String _key = _keys.next().toString();???BasicDBObject in = new BasicDBObject();???in.put(com.mongodb.QueryOperators.IN, inCondMap.get(_key));???if(query.size() == 0){????query.put(_key, in);???}else{????query.append(_key, in);???}??}??if(queryMap!=null){???query.putAll(queryMap);??}??return coll.count(query);?}?
??/* (non-Javadoc)? * @see com.easyway.mongodb.dao.DAO#findPage(java.lang.String, java.util.Map)? */?@Override?public DBCursor findPage(String collectionName,Map<String,Object> condMap){??DB db = getDB();??DBCollection coll = db.getCollection(collectionName);??BasicDBObject query = (BasicDBObject)condMap.get("query");//查询条件??BasicDBObject sort = new BasicDBObject();??DBCursor cur = coll.find(query).sort(sort);//.skip(pageInfo.getPerPageSize()); ??return cur;?}??/* (non-Javadoc)? * @see com.easyway.mongodb.dao.DAO#DBRefToDBObject(com.mongodb.DBRef)? */?@Override?public DBObject DBRefToDBObject(DBRef ref){??if(ref==null)return null;??return ref.fetch();?}??/* (non-Javadoc)? * @see com.easyway.mongodb.dao.DAO#DBRefDBObject(java.util.List)? */?@Override?public List<DBObject> DBRefDBObject(List<DBRef> refList){??if(refList==null)return null;??List<DBObject> resultList=new ArrayList<DBObject>();??for (DBRef ref : refList) {???resultList.add(ref.fetch());??}??return resultList;?}??/* (non-Javadoc)? * @see com.easyway.mongodb.dao.DAO#getQueryCodeByStartTimeAndEndTime(long, long)? */?@Override?public DBObject getQueryCodeByStartTimeAndEndTime(long startTime,long endTime){??BasicDBObject cond = new BasicDBObject();??cond.put(QueryOperators.GT, startTime);??cond.put(QueryOperators.LTE, endTime);??return cond;?}??/* (non-Javadoc)? * @see com.easyway.mongodb.dao.DAO#removeRepeat(java.util.List)? */?@Override?public List<DBRef> removeRepeat(List<DBRef> list){??if(list==null)return null;??List<DBRef> result=new ArrayList<DBRef>();??Map<String,String> tempMap=new HashMap<String,String>();??for (int i = 0; i < list.size(); i++) {???DBRef ref=list.get(i);???String id=ref.getId().toString();???if(tempMap.get(id)==null){????tempMap.put(id, id);????result.add(ref);???}??}??return result;?}?/* (non-Javadoc)? * @see com.easyway.mongodb.dao.DAO#removeRepeatString(java.util.List)? */?@Override?public List<String> removeRepeatString(List<String> list){??if(list==null)return null;??List<String> result=new ArrayList<String>();??Map<String,String> tempMap=new HashMap<String,String>();??for (int i = 0; i < list.size(); i++) {???String str=list.get(i);???if(tempMap.get(str)==null){????tempMap.put(str, str);????result.add(str);???}??}??return result;?}??/* (non-Javadoc)? * @see com.easyway.mongodb.dao.DAO#removeRef(java.util.List, java.lang.String)? */?@Override?public List<DBRef> removeRef(List<DBRef> list,String removeId){??if(list==null)return null;??List<DBRef> result=new ArrayList<DBRef>();??for (DBRef ref : list) {???if(removeId.equals(ref.getId().toString())){????continue;???}???result.add(ref);??}??return result;?}??/* (non-Javadoc)? * @see com.easyway.mongodb.dao.DAO#save(java.lang.String, com.mongodb.DBObject)? */?@Override?public void save(String collectionName,DBObject obj){??this.save(collectionName, obj, true);?}?/* (non-Javadoc)? * @see com.easyway.mongodb.dao.DAO#save(java.lang.String, com.mongodb.DBObject, boolean)? */?@Override?public void save(String collectionName,DBObject obj,boolean isUpdateModifyTime){??DB db = getDB();??DBCollection coll = db.getCollection(collectionName);??coll.save(obj);?}???/* (non-Javadoc)? * @see com.easyway.mongodb.dao.DAO#hasDBObject(java.lang.String, java.lang.String, boolean)? */?@Override?public boolean hasDBObject(String collectionName,String id,boolean isFindNormalStatus){??DB db = getDB();??DBCollection coll = db.getCollection(collectionName);??DBObject query=new BasicDBObject();??try {???query.put("_id", new ObjectId(id));??} catch (Exception e) {???return false;??}??long l=coll.count(query);??if(l==1)return true;??return false;?}?/* (non-Javadoc)? * @see com.easyway.mongodb.dao.DAO#hasDBObject(java.lang.String, java.lang.String)? */?@Override?public boolean hasDBObject(String collectionName,String id){??return hasDBObject(collectionName,id,true);?}??/* (non-Javadoc)? * @see com.easyway.mongodb.dao.DAO#hasDBObject(java.lang.String, java.lang.String, java.util.Map)? */?@Override?public boolean hasDBObject(String collectionName,String id,Map<String,Object> cond){??return hasDBObject(collectionName,id,cond,true);?}?/* (non-Javadoc)? * @see com.easyway.mongodb.dao.DAO#hasDBObject(java.lang.String, java.lang.String, java.util.Map, boolean)? */?@Override?public boolean hasDBObject(String collectionName,String id,Map<String,Object> cond,boolean isFindNormalStatus){??DB db = getDB();??DBCollection coll = db.getCollection(collectionName);??DBObject query=new BasicDBObject();??if(cond!=null){???query.putAll(cond);??}??try {???query.put("_id", new ObjectId(id));??} catch (Exception e) {??}??long l=coll.count(query);??if(l==1)return true;??return false;?}?/* (non-Javadoc)? * @see com.easyway.mongodb.dao.DAO#hasDBObject(java.lang.String, java.util.Map)? */?@Override?public boolean hasDBObject(String collectionName,Map<String,Object> cond){??return this.hasDBObject(collectionName, cond,false);?}?/* (non-Javadoc)? * @see com.easyway.mongodb.dao.DAO#hasDBObject(java.lang.String, java.util.Map, boolean)? */?@Override?public boolean hasDBObject(String collectionName,Map<String,Object> cond,boolean isOne){??if(cond==null)return false;??DB db = getDB();??DBCollection coll = db.getCollection(collectionName);??DBObject query=new BasicDBObject();??query.putAll(cond);??long l=coll.count(query);??if(isOne){???if(l==1)return true;??}else{???if(l>0)return true;??}??return false;?}??/* (non-Javadoc)? * @see com.easyway.mongodb.dao.DAO#ObjectToListDBRef(java.lang.String, java.lang.Object)? */?@Override?public List<DBRef> ObjectToListDBRef(String collectionName,Object obj){??if(obj==null)return null;??List<DBRef> result=new ArrayList<DBRef>();??if(obj instanceof Object[]){???Object[] arr=(Object[])obj;???for(int i=0;i<arr.length;i++){????Object arrobj=arr[i];????if(arrobj instanceof DBRef){?????result.add((DBRef)arrobj);????}else if(collectionName!=null&&arrobj instanceof String){?????if(this.hasDBObject(collectionName, arrobj.toString()))??????result.add(this.getDBRef(collectionName, arrobj.toString()));//new DBRef(this.getDB(),collectionName,new ObjectId(arrobj.toString()))????}???}??}else if(obj instanceof List){???List list=(List)obj;???for (int i = 0; i < list.size(); i++) {????Object listobj=list.get(i);????if(listobj instanceof DBRef){?????result.add((DBRef)listobj);????}else if(collectionName!=null&&listobj instanceof String){?????if(this.hasDBObject(collectionName, listobj.toString()))??????result.add(this.getDBRef(collectionName, listobj.toString()));//new DBRef(this.getDB(),collectionName,new ObjectId(listobj.toString()))????}???}??}else if(obj instanceof DBRef){???result.add((DBRef)obj);??}else if(collectionName!=null&&obj instanceof String){???if(this.hasDBObject(collectionName, obj.toString()))????result.add(this.getDBRef(collectionName, obj.toString()));//new DBRef(this.getDB(),collectionName,new ObjectId(obj.toString()))??}??return result;?}??/* (non-Javadoc)? * @see com.easyway.mongodb.dao.DAO#ObjectToListDBRef(java.lang.Object)? */?@Override?public List<DBRef> ObjectToListDBRef(Object obj){??return this.ObjectToListDBRef(null, obj);?}??/* (non-Javadoc)? * @see com.easyway.mongodb.dao.DAO#ObjectToDBRef(java.lang.Object)? */?@Override?public DBRef ObjectToDBRef(Object obj){??return this.ObjectToDBRef(null, obj);?}?/* (non-Javadoc)? * @see com.easyway.mongodb.dao.DAO#ObjectToDBRef(java.lang.String, java.lang.Object)? */?@Override?public DBRef ObjectToDBRef(String collectionName,Object obj){??if(obj==null)return null;??if(obj instanceof DBRef){???return (DBRef)obj;??}else if(obj instanceof List){???if(((List)obj).size()>0)????this.ObjectToDBRef(collectionName, ((List)obj).get(0));??}else if(obj instanceof Object[]){???if(((Object[])obj).length>0)????this.ObjectToDBRef(collectionName, ((Object[])obj)[0]);??}else if(collectionName!=null&&obj instanceof String){???return this.getDBRef(collectionName, obj.toString());??}??return null;?}??/* (non-Javadoc)? * @see com.easyway.mongodb.dao.DAO#DBRefListToStringArr(java.util.List)? */?@Override?public String[] DBRefListToStringArr(List<DBRef> refList){??if(refList!=null){???String[] ids=new String[refList.size()];???for (int i=0;i<ids.length;i++) {????DBRef ref=refList.get(i);????ids[i]=ref.getId().toString();???}???return ids;??}??return null;?}??/* (non-Javadoc)? * @see com.easyway.mongodb.dao.DAO#DBObjectListToDBRefList(java.util.List, java.lang.String)? */?@Override?public List<DBRef> DBObjectListToDBRefList(List<DBObject> list,String collectionName){??if(list!=null){???List<DBRef> refList=new ArrayList<DBRef>();???for (DBObject dbObject : list) {????refList.add(this.getDBRef(collectionName, dbObject.get("_id").toString()));???}???return refList;??}??return null;?}?
??/* (non-Javadoc)? * @see com.easyway.mongodb.dao.DAO#isDBObjectList(java.lang.Object)? */?@Override?public boolean isDBObjectList(Object obj){??if(obj instanceof Object[]) {???Object[] array = (Object[])obj;???if(array.length>0){????for (int i = 0; i < array.length; i++) {?????if(!(array[i] instanceof DBObject)){??????return false;?????}????}????return true;???}??} else if(obj instanceof List) {???List array = (List)obj;???if(array.size()>0){????for (int i = 0; i < array.size(); i++) {?????if(!(array.get(i) instanceof DBObject)){??????return false;?????}????}????return true;???}??} else if(obj instanceof DBObject) {???return true;??}??return false;?}??/* (non-Javadoc)? * @see com.easyway.mongodb.dao.DAO#objectToListDBObject(java.lang.Object)? */?@Override?public List<DBObject> objectToListDBObject(Object obj) {??if(obj == null) {???return null;??}??List<DBObject> result = new ArrayList<DBObject>();??if(obj instanceof Object[]) {??? Object[] array = (Object[])obj;??? for(int i = 0; i < array.length; i ++) {???? Object o = array[i];???? if(o instanceof DBObject) {????? DBObject dbObj = (DBObject)o;????? result.add(dbObj);???? }else if(o instanceof Map){????? Map map=(Map)o;????? DBObject dbo=new BasicDBObject();????? dbo.putAll(map);????? result.add(dbo);???? }??? }??} else if(obj instanceof List) {???List array = (List)obj;???for(int i = 0; i < array.size(); i ++) {????Object o = array.get(i);????if(o instanceof DBObject) {?????DBObject dbObj = (DBObject)o;?????result.add(dbObj);????}else if(o instanceof Map){?????Map map=(Map)o;?????DBObject dbo=new BasicDBObject();?????dbo.putAll(map);?????result.add(dbo);????}???}??} else if(obj instanceof DBObject) {???DBObject dbObj = (DBObject)obj;???result.add(dbObj);??}else if(obj instanceof Map){??? Map map=(Map)obj;??? DBObject dbo=new BasicDBObject();??? dbo.putAll(map);??? result.add(dbo);?? }??return result;?}?/* (non-Javadoc)? * @see com.easyway.mongodb.dao.DAO#objectToDBObject(java.lang.Object)? */?@Override?public DBObject objectToDBObject(Object obj) {??List<DBObject> list=this.objectToListDBObject(obj);??if(list==null||list.size()==0)return null;??return list.get(0);?}}

?

?

package com.easyway.mongodb.dao;import java.util.Map;import com.easyway.mongodb.ext.ReflectUtils;import com.easyway.mongodb.model.Hotel;import com.mongodb.DBObject;/** *  * @Title: TODO * @Description: 实现TODO * @Copyright:Copyright (c) 2011 * @Company:易程科技股份有限公司 * @Date:2012-3-3 * @author  * @version 1.0 */public class HotelDAO  extends BasicDAO<Hotel,String>{/** *  * @param hotel */public void addHotel(Hotel hotel){Map<String,Object> params=ReflectUtils.bean2Map(hotel);System.out.println("params="+params);add(getCollectionName(),params);}/** *  * @param condMap * @return */public DBObject findBYID(Map<String,Object> condMap){return findBYID(getCollectionName(),condMap);}}

?

?

应用:

package com.easyway.mongodb.app;import java.util.HashMap;import java.util.Map;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.easyway.mongodb.dao.HotelDAO;import com.easyway.mongodb.model.Hotel;import com.mongodb.DBObject;/** *  * @Title: TODO * @Description: 实现TODO * @Copyright:Copyright (c) 2011 * @Company:易程科技股份有限公司 * @Date:2012-3-3 * @author  * @version 1.0 */public class HotelApp {public static void main(String[] args) {   ApplicationContext ctx=new ClassPathXmlApplicationContext("classpath:applicationContext-resource.xml");   Hotel hotel=new Hotel();   hotel.setHotelName("model 168");   hotel.setMoney(899.00);   HotelDAO  hotelDAO=(HotelDAO)ctx.getBean("hotelDAO");   hotelDAO.addHotel(hotel);   Map<String,Object> conMap=new HashMap<String,Object>();   conMap.put("_id", "4f5af554ee422a8e10a4e8ab");   DBObject dbObject=hotelDAO.findBYID(conMap);   System.out.println("dbObject ="+dbObject);}}

?

?

热点排行