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. day21-3 类的组合

    目录 类的组合 组合的应用 类的组合 组合就是一个类的对象具备某一个属性,该属性的值是指向另外一个类的对象 组合的好处:解决类与类之间代码冗余的问题 组合的应用 需求:假如我们需要给学生增添课程属性, ...

  2. KMP中next数组的理解与应用

    理解 1.next数组一直往前走 next数组一直往前走,得到的所有前缀也是当前主串的后缀,当然了,也是当前主串的前缀. 2.周期性字符串 1.周期性字符串$\Leftrightarrow n \,\ ...

  3. (function(){})() 立即执行函数

    (function(){})() 立即执行函数 (function(a){})(5) 带参的

  4. CAD设置超链接(网页版)

    超链接(Hyperlink)可以看做是一个“热点”,它可以从当前Web页定义的位置跳转到其他位置. 设置对象动态提示事件回调函数. //设置对象动态提示事件回调函数 function DoInputP ...

  5. jdk5.0新增两个线程创建方法

    1.实现callable接口 import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; ...

  6. PHP 下基于 php-amqp 扩展的 RabbitMQ 简单用例 (四) -- Push API 和 Pull API

    RabbitMQ 中针对消息的分发提供了 Push API (订阅模式) 和 Pull API (主动获取) 两种模式. 在 PHP 中, 这两种模式分别通过 AMQPQueue 类中的 consum ...

  7. 安装Yellowfin报错——No such file or directory: '/tmp/pip-build-jykvuD/YellowFin/README.md'

    https://blog.csdn.net/quqiaoluo5620/article/details/80608474 在Pycharm中安装Yellowfin时一直报错"no such ...

  8. SQL Server中 sysobjects、sysolumns、systypes

    1.sysobjects    系统对象表. 保存当前数据库的对象,如约束.默认值.日志.规则.存储过程等 在大多数情况下,对你最有用的两个列是Sysobjects.name和Sysobjects.x ...

  9. [Python3网络爬虫开发实战] 1.8.2-Scrapy的安装

    Scrapy是一个十分强大的爬虫框架,依赖的库比较多,至少需要依赖的库有Twisted 14.0.lxml 3.4和pyOpenSSL 0.14.在不同的平台环境下,它所依赖的库也各不相同,所以在安装 ...

  10. [转]TOpenDialog

    转自:http://www.cnblogs.com/zhangzhifeng/archive/2011/08/04/2127395.html 1.TOpenDialog组件的典型用法“打开”对话框是用 ...