db.properties

#mongodb数据库配置文件

#数据库server所在的ip地址
ip=127.0.0.1 

#mongodb服务port号
port=27017

#要连接的库
dbName=yc

#username
uname=

#password
password=

#默认的连接集合
collectionName=voting



DBHelper

package com.yc.votingsys.dao;


import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.Mongo;
import com.mongodb.MongoException;
import com.mongodb.WriteResult;
import com.yc.votingsys.utils.LogUtil;
import com.yc.votingsys.utils.StringUtil;


public class DBHelper {
private static Mongo mongo=null;
private DB db=null;
private DBCollection collection=null;

/**
 * 连接到server
 */
static{
try {
mongo= new Mongo(MyPro.getInstance().getProperty("id"),Integer.parseInt( MyPro.getInstance().getProperty("port"))
);
} catch (UnknownHostException e) {
LogUtil.log.error(e.toString());
e.printStackTrace();
} catch (MongoException e) {
LogUtil.log.error(e.toString());
e.printStackTrace();
}  
}

/**
 * 获取数据库连接
 * @param dbName:数据库名
 * @param uname:登陆数据库的username
 * @param pwd:登录password
 * @return:成功返回true
 */
public boolean getDb(String dbName,String uname,String pwd){
db=mongo.getDB(MyPro.getInstance().getProperty("dbName"));

//校验用户password是否正确 
if(!StringUtil.isNull(uname) && !StringUtil.isNull(pwd)){ //假设给定了username和password
if (!db.authenticate(uname, pwd.toCharArray())){  
LogUtil.log.error("username或password错误,连接MongoDB数据库失败....");
return false;
}else{  
LogUtil.log.error("连接MongoDB数据库成功...."); 
return true;
}
}else{ //假设没有给定,则读取配置文件里配置的username和password
String unames=MyPro.getInstance().getProperty("uname");
String pwds=MyPro.getInstance().getProperty("password");

//校验用户password是否正确 
if(!StringUtil.isNull(unames) && !StringUtil.isNull(pwds)){
if (!db.authenticate(unames, pwds.toCharArray())){  
LogUtil.log.error("username或password错误,连接MongoDB数据库失败....");
return false;
}else{  
LogUtil.log.error("连接MongoDB数据库成功...."); 
return true;
}
}else{
return true;
}
}
}

/**
 * 关闭数据库连接
 * @param mongo:server
 * @param db:数据库
 */
public void closeAll(Mongo mongo,DB db){
if(db!=null){
db.requestDone();
}
//
if(mongo!=null){
//
mongo.close();
//
}
}

/**
 * 获取指定的集合
 * @param collectionName:集合名称
 * @param dbName:数据库名
 * @param uname:登陆数据库的username
 * @param pwd:登录password
 * @return:返回获取到的集合
 */
public DBCollection getDBCollection(String collectionName,String dbName,String uname,String pwd){
if(getDb(dbName,uname,pwd)){ //连接数据库成功
db.requestStart(); //启动
if(collectionName==null){
collectionName=MyPro.getInstance().getProperty("collectionName");
}
collection=db.getCollection(collectionName); //获取指定的集合
}else{
throw new RuntimeException("数据库连接失败。请检查username和password...");
}
return collection;
}

/**
 * 加入对象
 * @param map
 * @param collection
 * @return
 */
public int addObject(Map<String,Object> map,String collectionName){
WriteResult result=null;
try {
if(collectionName==null){
collection=this.getDBCollection(null, null, null, null);
}else{
collection=this.getDBCollection(collectionName, null, null, null);
}
result=collection.save(  new BasicDBObject(map) );
} catch (Exception e) {
LogUtil.log.error(e); 
e.printStackTrace();
} finally{
this.closeAll(mongo, db);
}
return result.getN();
}

/**
 * 加入对象
 * @param map
 * @param collection
 * @return
 */
public int addObjects(Map<String,String> map,String collectionName){
WriteResult result=null;
try {
if(collectionName==null){
collection=this.getDBCollection(null, null, null, null);
}else{
collection=this.getDBCollection(collectionName, null, null, null);
}

result=collection.save(  new BasicDBObject(map) );
} catch (Exception e) {
LogUtil.log.error(e); 
e.printStackTrace();
} finally{
this.closeAll(mongo, db);
}
return result.getN();
}

/**
 * 查询单个结果
 * @param params
 * @param collectionName
 * @return
 */
public Map<String,Object> findOne(Map<String,String> params,String collectionName){
Map<String,Object> map=new HashMap<String,Object>();
try {
if(collectionName==null){
collection=this.getDBCollection(null, null, null, null);
}else{
collection=this.getDBCollection(collectionName, null, null, null);
}

DBObject object;
if(params!=null){
object=collection.findOne( new BasicDBObject(params) );
}else{
object=collection.findOne();
}

Set<String> keys=object.keySet();
for(String key:keys){
map.put(key, object.get(key));
}
}catch (MongoException e) {
LogUtil.log.error(e); 
e.printStackTrace();
}finally{
this.closeAll(mongo, db);
}
return map;
}
public Object findOneToObject(Map<String,String> params,String collectionName){
DBObject object = null;
try {
if(collectionName==null){
collection=this.getDBCollection(null, null, null, null);
}else{
collection=this.getDBCollection(collectionName, null, null, null);
}
if(params!=null){
object=collection.findOne( new BasicDBObject(params) );
}else{
object=collection.findOne();
}
}catch (MongoException e) {
LogUtil.log.error(e); 
e.printStackTrace();
}finally{
this.closeAll(mongo, db);
}
return object;
}

public List<Object> find(Map<String,Object> params,String collectionName){
List<Object> list=new ArrayList<Object>();
try {
if(collectionName==null){
collection=this.getDBCollection(null, null, null, null);
}else{
collection=this.getDBCollection(collectionName, null, null, null);
}

DBCursor cursor;
if(params!=null){
cursor=collection.find(new BasicDBObject(params) );
}else{
cursor=collection.find();
}

DBObject object;
while(cursor.hasNext()){
object=cursor.next();
list.add(object);
}
}catch (MongoException e) {
LogUtil.log.error(e); 
e.printStackTrace();
}finally{
this.closeAll(mongo, db);
}
return list;
}

/**
 * 获取总记录条数
 * @param params:參数列表
 * @return:总记录数
 */
public int getTotal(Map<String,Object> params,String collectionName){
int total=0;
try {
if(collectionName==null){
collection=this.getDBCollection(null, null, null, null);
}else{
collection=this.getDBCollection(collectionName, null, null, null);
}
if(params!=null){
total=(int) collection.count( new BasicDBObject(params) );
}else{
total=(int) collection.count();
}
}catch (MongoException e) {
LogUtil.log.error(e); 
e.printStackTrace();
}finally{
this.closeAll(mongo, db);
}
return total;
}
/**
 * 更新信息
 * @param map:条件
 * @param params:改动的值
 * @param collectionName
 * @return
 */
public int update(Map<String,Object> map,Map<String,Map<String,Object>> params,String collectionName){
WriteResult result = null;
try {
if(collectionName==null){
collection=this.getDBCollection(null, null, null, null);
}else{
collection=this.getDBCollection(collectionName, null, null, null);
}
BasicDBObject object=new BasicDBObject();
if(params!=null){
Set<String> set=params.keySet();
for(String key:set){
object.append(key,params.get(key));
}
}
if(map!=null){
result=collection.update(new BasicDBObject(map),object);
}else{
result=collection.update(null,new BasicDBObject(params));
}
}catch (MongoException e) {
LogUtil.log.error(e); 
e.printStackTrace();
}finally{
this.closeAll(mongo, db);
}
return result.getN();
}
}

MongoDB Helper的简单封装的更多相关文章

  1. Golang 对MongoDB的操作简单封装

    使用MongoDB的Go驱动库 mgo,对MongoDB的操作做一下简单封装 初始化 操作没有用户权限的MongoDB var globalS *mgo.Session func init() { s ...

  2. 简单封装mongodb

    首先安装mongodb  npm i mongodb --save 简单封装,在modules目录下新建db.js var MongoClient=require('mongodb').MongoCl ...

  3. MongoDB Python官方驱动 PyMongo 的简单封装

    最近,需要使用 Python 对 MongodB 做一些简单的操作,不想使用各种繁重的框架.出于可重用性的考虑,想对 MongoDB Python 官方驱动 PyMongo 做下简单封装,百度一如既往 ...

  4. 孤荷凌寒自学python第六十六天学习mongoDB的基本操作并进行简单封装5

    孤荷凌寒自学python第六十六天学习mongoDB的基本操作并进行简单封装5并学习权限设置 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第十二天. 今天继续学习mongo ...

  5. 孤荷凌寒自学python第六十五天学习mongoDB的基本操作并进行简单封装4

    孤荷凌寒自学python第六十五天学习mongoDB的基本操作并进行简单封装4 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第十一天. 今天继续学习mongoDB的简单操作 ...

  6. 孤荷凌寒自学python第六十四天学习mongoDB的基本操作并进行简单封装3

    孤荷凌寒自学python第六十四天学习mongoDB的基本操作并进行简单封装3 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第十天. 今天继续学习mongoDB的简单操作, ...

  7. 孤荷凌寒自学python第六十三天学习mongoDB的基本操作并进行简单封装2

    孤荷凌寒自学python第六十三天学习mongoDB的基本操作并进行简单封装2 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第九天. 今天继续学习mongoDB的简单操作, ...

  8. 孤荷凌寒自学python第六十二天学习mongoDB的基本操作并进行简单封装1

    孤荷凌寒自学python第六十二天学习mongoDB的基本操作并进行简单封装1 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第八天. 今天开始学习mongoDB的简单操作, ...

  9. 基于MongoDb官方C#驱动封装MongoDbCsharpHelper类(CRUD类)

    近期工作中有使用到 MongoDb作为日志持久化对象,需要实现对MongoDb的增.删.改.查,但由于MongoDb的版本比较新,是2.4以上版本的,网上已有的一些MongoDb Helper类都是基 ...

随机推荐

  1. A C compiler that parses this code will contain at least the following symbol table entries

    A C compiler that parses this code will contain at least the following symbol table entries Consider ...

  2. C# 获取文件编码

    using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Tex ...

  3. Android中notifyDataSetInvalidated()和notifyDataSetChanged()有什么区别

     看下源码中对于这两个方法   public void notifyDataSetChanged () 该方法内部实现了在每个观察者上面调用onChanged事件.每当发现数据集有改变的情况,或者读取 ...

  4. [JOYOI] 1055 沙子合并

    题目限制 时间限制 内存限制 评测方式 题目来源 1000ms 131072KiB 标准比较器 Local 题目描述 设有N堆沙子排成一排,其编号为1,2,3,-,N(N<=300).每堆沙子有 ...

  5. python3.x Day4 模块!!

    json and pickle模块 用途是为了持久化信息,这种持久化方式可以和其他程序语言兼容,一般都支持json,json只能持久化数据,pickle是python特有的方式,可以持久化所有信息和数 ...

  6. Java字符拼成图片(image-ASCII)

    目录 背景 代码思路 难点讲解 如何得到rgb 如何让不同颜色匹配不同字符 为什么我的图片只能打一半 OutOfMemoryError错误 为什么用汉字来打印图案会扭曲 装逼时刻 @(Java字符图片 ...

  7. EGit应用

    [创建Dynamic Web Project项目] [创建仓库] 项目(鼠标右键) ==〉Team==〉Share Project..... ==〉选择Git 配置Repository的目录 创建完成 ...

  8. 【】node基础概念问题(转载)

    1.nodejs编写HelloWord,了解什么是nodejs,nodejs有什么特点   2.nodejs的模块怎么用,如何载入别的模块(require),如何给另一模块调用(module, mod ...

  9. HDU 5458 Stability

    Stability Time Limit: 2000ms Memory Limit: 102400KB This problem will be judged on HDU. Original ID: ...

  10. 关于oracle 压缩表

    这周客户的问题非常多,总是说我的数据不对.于是我对数据梳理了以后发现以前认为是重复数据的,其实并不是,而是我忽略了一个维度.那么这样一来,我们的周详单表就会有500多万的数据.一个月按照4周计算,就要 ...