MongoDB:mongodb在项目开发时的安全验证、分页查询操作
MongoDB:mongodb在项目开发时的安全验证、分页查询操作。
对于数据库而言,在项目应用中都需要安全验证,不然,就会报错,呵呵~~
现在贴出来我在项目中是怎么做的。
原创文章,转载请注明出处:http://blog.csdn.net/jessonlv/article/details/18656333
数据源bean:
package com.ishowchina.user.dao;import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.MongoClient;public class DataSource {private String ip;//数据库连接信息要从配置文件中获取 参考appconfig.properties文件private Integer port;protected String dbName;protected Boolean auth;protected String userName;protected String passWord;//打开连接 此处在获取数据库信息(ip、账户、密码等)后,打开数据库。public MongoClient OpenConnection() throws Exception{MongoClient mongoClient = new MongoClient( ip,port);return mongoClient;}//获取数据集 此处为数据库安全验证public DBCollection getCollection(MongoClient client,String tableName){if(client==null){return null;}else {DB db = client.getDB(getDbName());//获取数据库boolean r=true;//验证用户及密码if(auth!=null && auth.equals(true)){r = db.authenticate(userName, passWord.toCharArray());//密码验证}if(r){DBCollection coll = db.getCollection(tableName);//获取数据集return coll;}else {return null;}}}//释放连接public void ReleaseConnection(MongoClient mongoClient){if(mongoClient!=null){mongoClient.close();}}//删除操作,注意要传入参数public void deleteObject(DBObject o,DBCollection col){col.remove(o);}//分页查询 分页查询mongodb已经为我们集成了,只需调用api就行public DBCursor queryPage(DBObject query,DBObject sort,int start,int limit,DBCollection col){//.sort('account',1).limit(10),int count = cursor.count()BasicDBObject exp=new BasicDBObject("_id",0);return col.find(query,exp).sort(sort).skip(start).limit(limit);}public String getIp() {return ip;}public void setIp(String ip) {this.ip = ip;}public Integer getPort() {return port;}public void setPort(Integer port) {this.port = port;}public String getDbName() {return dbName;}public Boolean getAuth() {return auth;}public void setAuth(Boolean auth) {this.auth = auth;}public void setDbName(String dbName) {this.dbName = dbName;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getPassWord() {return passWord;}public void setPassWord(String passWord) {this.passWord = passWord;}
}
appconfig.properties配置文件的内容,配置数据库源信息
mongo.ip=160.0.0.243
mongo.port=27017
mongo.auth=true
mongo.user=ucenter
mongo.pwd=user2show
mongo.dbName=ucenter
此外,肯定还要把配置文件appconfig.properties导入到spring bean factory,也就是需要让datasource.java 知道去appconfig.properties 中找数据库配置信息
spring-servlet.xml
<!-- 导入配置文件 --><bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>classpath:appconfig.properties</value></list> </property> </bean>
这样做还不够,虽然知道了去那找数据库配置信息,但是,怎么获取数据库配置信息呢,还是在spring-servlet.xml里。
<!-- 数据源 --><bean id="dataSource" class="com.ishowchina.user.dao.DataSource"><!-- 此处是和我们的数据库bean是对应关系 --><property name="ip" value="${mongo.ip}"/> <!-- 此处是去appconfig.properties里找关键字对应的数据库信息 --><property name="port" value="${mongo.port}"/> <property name="dbName" value="${mongo.dbName}"/> <property name="auth" value="${mongo.auth}"/><property name="userName" value="${mongo.user}"/> <property name="passWord" value="${mongo.pwd}"/> </bean>
以上就是完全的相关配置,接下来我们就可以调用getCollection、OpenConnection等方法了
举个例子:
public DBObject getUserInfo(DBObject o) throws Exception{MongoClient mongoClient = dataSource.OpenConnection();DBCollection coll = dataSource.getCollection(mongoClient,tableName);//获取数据集userinfo//mongoClient.setWriteConcern(WriteConcern.JOURNALED);//Setting Write ConcernBasicDBObject exp=new BasicDBObject("_id",0);//排除ID字段DBObject myDoc = coll.findOne(o,exp);dataSource.ReleaseConnection(mongoClient) ;//释放连接return myDoc;}
以上,大致流程就这样。。
大家如果有问题或者更好的方法,欢迎交流。
转载于:https://www.cnblogs.com/jessonlv/p/4387997.html
MongoDB:mongodb在项目开发时的安全验证、分页查询操作相关推荐
- 刚开始用 Go 做项目开发时都会面临哪些问题?
我身边几个朋友,当初掌握Go的时候都是硬赶着上架,语法还没完全掌握就投入到项目开发中.因为有了前人在企业项目里打好的基础,一开始我们就是写业务,感觉跟在前人定好的大纲里做填空题一样,后来慢慢上手后才更 ...
- Cocos2d-x项目开发时在Eclipse中配置环境编译C++
最近在做cocos2d-x的项目开发,当然前期肯定是环境的配置工作,为了能方便的在Eclipse中编辑和编译C++部分的代码,则需要配置Eclipse的环境,之前几次犯了一些错误,导致每次打开C++的 ...
- 瑞吉外卖项目:新增菜品与菜品分页查询
目录 一. 新增菜品 1.1 需求分析 1.2 数据模型 1.3 代码实现 二. 菜品分页查询 2.1 需求分析 2.2 代码编写 一. 新增菜品 1.1 需求分析 后台系统可以管理菜品信息,通过新增 ...
- 使用Eclipse进行Javaweb项目开发时,如何设置外置浏览器Chrome
使用Eclipse开发Javaweb项目时,在Eclipse中显示页面不是很好,那么如何让它自动打开外置浏览器呢?操作如下
- 详解Python项目开发时自定义模块中对象的导入和使用
背景:1)任何一个Python程序文件既可以直接执行,也可以作为模块导入再使用其中的对象:2)对于大型系统开发,一般不会把所有代码放到单个文件中,而是根据功能将其分类并分散多个模块中,在编写小型项目时 ...
- python导入模块中的对象_详解Python项目开发时自定义模块中对象的导入和使用
背景:1)任何一个Python程序文件既可以直接执行,也可以作为模块导入再使用其中的对象:2)对于大型系统开发,一般不会把所有代码放到单个文件中,而是根据功能将其分类并分散多个模块中,在编写小型项目时 ...
- 作为嵌入式软件工程师在项目开发时的一些易错总结-05
一.一个开关选择芯片引发的逻辑混乱问题 1.问题描述:初始化时,使用开关选择芯片,只能改变一边的状态:但是在运行过程中,可以分别控制两边:但是方向是反的: 2.当时脑子一团雾水,没有一点想法: 3.查 ...
- 项目开发时前端及数据库遇到的问题
目录 解决Navicat导入Excel文件表时无法打开 页面缩放不影响布局方法,类似百度那样 html td标签 单行数据,限制字符长度,剩下字符以....显示 多行文本溢出省略号解决方案 让ul l ...
- 在项目开发时创建上传微服务,我们一些纠结的点
微服务除了可以进行业务处理之外,也可以针对上传功能进行创建,所有的上传微服务依然需要向Eureka中注册,这样就可以在zuul中进行微服务代理操作. 注意:不建议构建上传微服务 在实 ...
最新文章
- 基于简化点云地图的语义边缘对齐的单目定位方法
- MySQL优化篇:数据准备
- 为什么华为在发布会不提鸿蒙,华为又要开发布会?这次没有手机,鸿蒙系统要当主角!...
- 横线登记式明细分类账
- 【转】Xposed+JustTrustMe关闭SSL证书验证解决无法抓取https包问题
- 英语语法学习--名词
- 职业规划-三大职业生涯阶段
- linpack学习记录
- 举个栗子!Tableau 技巧(109):用 LOD 计算产品销售周期
- vue - vue项目使用BOS (百度云对象存储)上传文件
- c语言调用min()函数求最小值,min函数(min函数多条件求最小值)
- prometheus 告警配置以及配置项解释
- Pembuatan Sistem Registrasi Kamar Hotel Berbasis Website Pada Hotel Graha Prima Pacitan 外文翻译
- 如何用成长型思维赋能敏捷
- 数据库字段动态扩展设计
- D. Sonya and Matrix
- matlab画动图留下末端点轨迹,请问Matlab robotic Toolbox中怎么让机械手运动时末端走过的轨迹显示出来?...
- Homebrew error: Another active Homebrew process is already in progress
- jdk-18.0.0.1安装包下载安装教程
- 视频教程-JSON入门基础视频课程-Java
热门文章
- Windows10下git bash中添加wget下载工具
- octotree的安装
- 在 Windows 10 中开启移动 WLAN 热点
- java集合(List,Set,Map)详细总结
- 51nod 算法马拉松18 B 非010串 矩阵快速幂
- 中山大学2016年硕士研究生入学考试复试基本分数线
- js控制select数据绑定下拉列表
- 教育技术研究生必读书目(转载)
- 返回或输出类型为 unsigned 8-bit type(8U) 的函数积累!
- OpenCV中的cvCreateImage的参数channels()的意义