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. (转)淘淘商城系列——引用dubbo服务

    http://blog.csdn.net/yerenyuan_pku/article/details/72758663 上文我们一起学习了如何发布一个dubbo服务,本文我就来教大家如何在web工程中 ...

  2. 用Go向MySQL导入.csv文件

    今天来更新一个很少碰到,但碰到了又让人十分蛋疼的问题——Go语言中执行MySQL的load data local infile语句报local file 'xxx' is not registered ...

  3. iView webapp / Mint UI / MUI [前端UI]

    前端UI iView webapp一套高质量的 微信小程序 UI 组件库 https://weapp.iviewui.com/?from=iview Mint UI 基于 Vue.js 的移动端组件库 ...

  4. 如何优化LIMIT

    首先我们先创建个数据表做测试 表名 test (id(int) , name(var char) , content(text) , pid(int) ) 往里面倒几百万条数据进去做测试. 我们都知道 ...

  5. linux 小键盘 数字键盘 wiki

    https://wiki.archlinux.org/index.php/Activating_Numlock_on_Bootup_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96 ...

  6. 洛谷——P1731 [NOI1999]生日蛋糕

    P1731 [NOI1999]生日蛋糕 搜索+剪枝 常见的剪枝: 若当前状态+后面所要搜索的最差的状态$>$或是$<$最后的状态,就返回 预处理最差的状态 #include<iost ...

  7. 笔试算法题(36):寻找一棵二叉树中最远节点的距离 & 根据二叉树的前序和后序遍历重建二叉树

    出题:求二叉树中距离最远的两个节点之间的距离,此处的距离定义为节点之间相隔的边数: 分析: 最远距离maxDis可能并不经过树的root节点,而树中的每一个节点都可能成为最远距离经过的子树的根节点:所 ...

  8. Go:数组

    package main import "fmt" func main() { // 定义数组的方式 var array1 [3]int array2 := [3]int{} fm ...

  9. 集训第四周(高效算法设计)M题 (扫描法)

    原题:UVA11078 题意:给你一个数组,设a[],求一个m=a[i]-a[j],m越大越好,而且i必须小于j 怎么求?排序?要求i小于j呢.枚举?只能说超时无上限.所以遍历一遍数组,设第一个被减数 ...

  10. prometheus监控mysql

    创建一个用于mysqld_exporter连接到MySQL的用户并赋予所需的权限 mysql> GRANT REPLICATION CLIENT, PROCESS ON *.* TO '; my ...