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. 数据结构算法 - ConcurrentHashMap 源码解析

    五个线程同时往 HashMap 中 put 数据会发生什么? ConcurrentHashMap 是怎么保证线程安全的? 在分析 HashMap 源码时还遗留这两个问题,这次我们站在 Java 多线程 ...

  2. 第一天 初识Python

    Python基础 一 编程语言     什么是编程语言?    上面提及的能够被计算机所识别的表达方式即编程语言,语言是沟通的介质,而编程语言是程序员与计算机沟通的介质.在编程的世界里,计算机更像是人 ...

  3. 【转】C# 二进制,十进制,十六进制 互转

    //十进制转二进制 Console.WriteLine(Convert.ToString(69, 2)); //十进制转八进制 Console.WriteLine(Convert.ToString(6 ...

  4. 入门迅速、应用广泛、月薪两万,马哥Python前景为什么这么好?

    随着Python的技术的流行,Python在为人们带来工作与生活上带来了很多的便捷,因为Python简单,学起来快,也是不少新手程序员入门的首选语言.新手们比较关心的就是Python的发展前景与方向. ...

  5. kafka 服务端消费者和生产者的配置

    在kafka的安装目录下,config目录下有个名字叫做producer.properties的配置文件 #指定kafka节点列表,用于获取metadata,不必全部指定 #需要kafka的服务器地址 ...

  6. Centos6.8 安装mongo3.6以及权限配置和开启外网链接

    目录 安装环境和版本说明,以及参考文档链接 安装MongoDB数据库 运行MongoDB数据库 删除卸载MongoDB 配置MongoDB管理员用户 修改配置文件,允许外网链接 安装配置完成,使用Ro ...

  7. MongoDB中mapReduce的使用

    MongoDB中mapReduce的使用 制作人:全心全意 mapReduce的功能和group by的功能类似,但比group by处理的数据量更大 使用示例: var map = function ...

  8. PHP:Mysql判断KEY是否存在 如果存在走修改 如果不存在走添加

    文章来源:http://www.cnblogs.com/hello-tl/p/7738113.html 0.PHP代码 <?php /** * POST 传参 * * 例子 添加修改 使用同一个 ...

  9. 笔记——collections模块

    collections模块 collections模块在内置数据类型(dict.list.set.tuple)的基础上,还提供了几个额外的数据类型:ChainMap.Counter.deque.def ...

  10. Leetcode 137.只出现一次的数字II

    只出现一次的数字II 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现了三次.找出那个只出现了一次的元素. 说明: 你的算法应该具有线性时间复杂度. 你可以不使用额外空间来实现吗? ...