mongodb 工具类

我写的一个mongodb工具类,因为需要,研究过一段的时间,这个里面可以实现javaobject到mongodb的数据之间的转换,仅供参考,欢迎评论哈,刚刚入驻csdn,如果有评论我会很兴奋的



package util;

import inter.DBUtilInter;

import java.util.ArrayList;
import java.util.List;


import com.mongodb.DBObject;

/**
 * <p>util.MongoConUtil.java</p>
 * <p>Description: mongodb基本操作工具类</p>
 * <p>Copyright:  groups 2014-8-21</p>
 * <p>Company:  </p>
 * @author liu email: 178867729@qq.com
 * @date 2014-8-21
 * @version 1.0
 */   
public class MongoDBUtil implements DBUtilInter{
	private MongoDBConnection mongoConUtil;//数据库连接类
	private String splitData;//分流方式
	
	/**
	 * 无参数初始化,默认读取根目录下mongo.config配置文件
	 */
	public MongoDBUtil(){
		this.mongoConUtil=new MongoDBConnection("mongo.config");
		this.splitData=mongoConUtil.getSplitData();
	}
	/**
	 * 有参初始化,读取指定根目录下配置文件
	 * @param configFileName  根目录下配置文件名称
	 */
	public MongoDBUtil(String configFileName){
		this.mongoConUtil=new MongoDBConnection(configFileName);
		this.splitData=mongoConUtil.getSplitData();
	}
	  
	/**
	 * 
	* <p>getSplitData</p>
	* <p>Description: 获得配置文件中的分流数据</p>
	* <p>Copyright:  groups 2014-10-11</p>
	* <p>Company:  </p>
	* @author bard email:178867729@qq.com
	* @date 2014-10-11 下午2:43:46
	* @version 1.0
	* @return 分流数据
	 */
	 public String getSplitData() {
		return splitData;
	} 
 
	/**
	  * 
	 * <p>queryAll</p>
	 * <p>Description: 查询所有数据</p>
	 * <p>Copyright:  groups 2014-8-21</p>
	 * <p>Company:  </p>
	 * @author liu email:178867729@qq.com
	 * @date 2014-8-21 下午12:29:12
	 * @version 1.0
	 * @param tableName  数据表名称
	  */
	public List<Object> findAll(String tableName,Class clazz) throws Exception{
		if(clazz==null) return null;
		return DBCursorToJavaObjList(mongoConUtil.getDBConnection(tableName).find(null,(DBObject)com.mongodb.util.JSON.parse("{_id:0}")), clazz);
	}
	
	/**
	  * 
	 * <p>queryAll</p>
	 * <p>Description: 查询所有数据  支持分页</p>
	 * <p>Copyright:  groups 2014-8-21</p>
	 * <p>Company:  </p>
	 * @author liu email:178867729@qq.com
	 * @date 2014-8-21 下午12:29:12
	 * @version 1.0
	 * @param tableName  表名称
	 * @param pageSize  页面大小
	 * @param page  页数
	  */
  public List<Object> findAll(String tableName,Class clazz,int pageSize,int page) throws Exception{
	   if(clazz==null) return null;
     return DBCursorToJavaObjList(mongoConUtil.getDBConnection(tableName).find(null,(DBObject)com.mongodb.util.JSON.parse("{_id:0}")).skip((page - 1) * pageSize).limit(pageSize), clazz);
   }
  
   /**
    * 
   * <p>findOne</p>
   * <p>Description:根据条件查询一条数据,如果有多条结果返回第一条 </p>
   * <p>Copyright:  groups 2014-8-21</p>
   * <p>Company:  </p>
   * @author liu email:178867729@qq.com
   * @date 2014-8-21 下午3:27:29
   * @version 1.0
   * @param tableName  表名称
   * @param pareObj  查询条件对象
   * @return  查询结果对象
    */
  @Override
  public Object findOne(String tableName, Object pareObj) throws Exception{
	  List<Object> rsList=findByPara(tableName, pareObj);
	  if(rsList==null) return null;
     return rsList.size()==0?null:rsList.get(0);
  }
  
   /**
    * 
   * <p>findByPara</p>
   * <p>Description: 根据条件查询</p>
   * <p>Copyright:  groups 2014-8-21</p>
   * <p>Company:  </p>
   * @author liu email:178867729@qq.com
   * @date 2014-8-21 下午3:28:23
   * @version 1.0
   * @param tableName  表名称
   * @param pareObj  条件参数对象
   * @return  返回结果为一个集合
    */
  @Override
  public List<Object> findByPara(String tableName, Object pareObj) throws Exception{
	  return DBCursorToJavaObjList(mongoConUtil.getDBConnection(tableName).find(JavaObjToDBObj(pareObj),(DBObject)com.mongodb.util.JSON.parse("{_id:0}")), pareObj.getClass());
 }
  /**
   * 
   * <p>findByPara</p>
   * <p>Description: 根据条件查询   支持分页</p>
   * <p>Copyright:  groups 2014-8-21</p>
   * <p>Company:  </p>
   * @author liu email:178867729@qq.com
   * @date 2014-8-21 下午3:28:23
   * @version 1.0
   * @param tableName  表名称
   * @param pareObj  条件参数对象
   * @param pageSize  页面大小
   * @param page  页数
   * @return  返回结果为一个集合
   */
  @Override
  public List<Object> findByPara(String tableName, Object pareObj,int pageSize,int page) throws Exception{
	  return DBCursorToJavaObjList(mongoConUtil.getDBConnection(tableName).find(JavaObjToDBObj(pareObj),(DBObject)com.mongodb.util.JSON.parse("{_id:0}")).skip((page - 1) * pageSize).limit(pageSize), pareObj.getClass());
  }
  
   /**
    * 
   * <p>addList</p>
   * <p>Description: 插入一个集合list</p>
   * <p>Copyright:  groups 2014-8-21</p>
   * <p>Company:  </p>
   * @author liu email:178867729@qq.com
   * @date 2014-8-21 下午12:58:13
   * @version 1.0
   * @param tableName  表名称
   * @param addObjList  java对象集合
   * @return  成功返回1
    */
  @Override
   public int addList(String tableName, List<Object> addObjList) throws Exception{
	   List<DBObject> DBObjList=null;
	   try {
		   DBObjList=new ArrayList<DBObject>();
		   for (Object javaObj : addObjList) {
			   DBObjList.add(JavaObjToDBObj(javaObj));
		   }
	} catch (Exception e) {
		e.printStackTrace();
	}
       return mongoConUtil.getDBConnection(tableName).insert(DBObjList).getN();
   }
   
   /**
    * 
   * <p>add</p>
   * <p>Description:插入一条数据 </p>
   * <p>Copyright:  groups 2014-8-21</p>
   * <p>Company:  </p>
   * @author liu email:178867729@qq.com
   * @date 2014-8-21 下午3:31:44
   * @version 1.0
   * @param tableName  表名称
   * @param addObj  插入对象
   * @return  成功返回1
    */
  @Override
   public int add(String tableName, Object addObj) throws Exception{
       return mongoConUtil.getDBConnection(tableName).insert(JavaObjToDBObj(addObj)).getN();
   }
   
   /**
    * 
   * <p>update</p>
   * <p>Description: 数据更新</p>
   * <p>Copyright:  groups 2014-8-21</p>
   * <p>Company:  </p>
   * @author liu email:178867729@qq.com
   * @date 2014-8-21 下午1:09:43
   * @version 1.0
   * @param tableName  表名称
   * @param newObj  修改之后的java对象 
   * @param paraObj  修改条件 java对象    
   * * @return  成功返回1
    */
  @Override
   public int update(String tableName, Object paraObj,  Object newObj) throws Exception{
	 //  return mongoConUtil.getDBConnection(tableName).update(JavaObjToDBObj(whereObj), JavaObjToDBObj(dataObj), false/*如果数据库不存在,是否添加*/, false/*多条修改*/).getN();
	   return mongoConUtil.getDBConnection(tableName).update(JavaObjToDBObj(paraObj), (com.mongodb.DBObject) com.mongodb.util.JSON.parse("{\"$set\":"+com.alibaba.fastjson.JSON.toJSONString(newObj)+"}"), false/*如果数据库不存在,是否添加*/, true/*多条修改*/).getN();
   }
   
   /**
    * 
   * <p>delete</p>
   * <p>Description:删除数据 </p>
   * <p>Copyright:  groups 2014-8-21</p>
   * <p>Company:  </p>
   * @author liu email:178867729@qq.com
   * @date 2014-8-21 下午1:51:29
   * @version 1.0
   * @param tableName  表名称
   * @param delObj  删除条件
   * @return  成功返回1
    */
  @Override
   public int delete(String tableName, Object delObj) throws Exception{
       return mongoConUtil.getDBConnection(tableName).remove(JavaObjToDBObj(delObj)).getN();
   }
  
   /**
    * 
   * <p>close</p>
   * <p>Description: 关闭数据连接(一般不用手动关闭,mongo自带关闭机制)</p>
   * <p>Copyright:  groups 2014-8-22</p>
   * <p>Company:  </p>
   * @author liu email:178867729@qq.com
   * @date 2014-8-22 上午8:26:50
   * @version 1.0
    */
  @Override
   public void close()throws Exception{
	   mongoConUtil.close();
	   mongoConUtil=null;
   }

	/**
	 * 
	* <p>JavaObjToDBObj</p>
	* <p>Description: 将java对象转换成json的DBObject对象  封装条件参数对象</p>
	* <p>Copyright:  groups 2014-8-18</p>
	* <p>Company:  </p>
	* @author liu email:178867729@qq.com
	* @date 2014-8-18 下午12:45:49
	* @version 1.0
	* @param javaObj  java对象
	* @return  DBObject  参数对象
	 */
   private com.mongodb.DBObject JavaObjToDBObj(Object javaObj) throws Exception{
		return (com.mongodb.DBObject) com.mongodb.util.JSON.parse(com.alibaba.fastjson.JSON.toJSONString(javaObj));
	}

	/**
	 * 
	* <p>DBCursorToJavaObj</p>
	* <p>Description:将DBCursor结果集转换成java对象集合 </p>
	* <p>Copyright:  groups 2014-8-18</p>
	* <p>Company:  </p>
	* @author liu email:178867729@qq.com
	* @date 2014-8-18 下午3:20:48
	* @version 1.0
	* @param dbCursor  DBCursor结果集
	* @param clazz  java类型
	* @return  java对象集合 List
	 */
	private java.util.List<Object> DBCursorToJavaObjList(com.mongodb.DBCursor dbCursor,Class clazz) throws Exception{
		java.util.List<Object> list=new java.util.ArrayList<Object>();
		while(dbCursor.hasNext()){
			String cur=dbCursor.next().toString();//去除数据库自动生成的ObjectId
	//		 cur=cur.replace(cur.split(",")[0], "{").replace("{,", "{");
			list.add(jsonStrToJavaObj(cur, clazz));
		}
		return list;
	}

	/**
	 * 
	* <p>jsonStrToJavaObj</p>
	* <p>Description: 将json字符串转换成java对象</p>
	* <p>Copyright:  groups 2014-8-18</p>
	* <p>Company:  </p>
	* @author liu email:178867729@qq.com
	* @date 2014-8-18 下午4:16:02
	* @version 1.0
	* @param jsonStr  json字符串
	* @param clazz java类型
	* @return  java对象Object
	 */
	private Object jsonStrToJavaObj(String jsonStr,Class clazz) throws Exception{
		return com.alibaba.fastjson.JSON.toJavaObject(com.alibaba.fastjson.JSON.parseObject(jsonStr), clazz);
	}

	/**
	 * 
	* <p>getCount</p>
	* <p>Description: 获得数据数量</p>
	* <p>Copyright:  groups 2014-8-18</p>
	* <p>Company:  </p>
	* @author liu email:178867729@qq.com
	* @date 2014-8-18 下午4:16:02
	* @version 1.0
	* @param tableName  表名称
	* @param paraObj 参数对象
	* @return  结果数
	 */
	@Override
	public int getCount(String tableName, Object paraObj) throws Exception {
		return mongoConUtil.getDBConnection(tableName).find(JavaObjToDBObj(paraObj)).count();
	}
   
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值