java连接MongoDB非常的简单,具体来说就2步:
1:向新建的工程中导入java-mongo的驱动包
如图:
2:建立一个链接帮助类,完成链接操作
package com.yc.mongodb;
import java.util.Iterator;
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.WriteResult;
public class MongoLink2 {
public static void main(String[] args) {
Mongo mongo=null;
DB db=null;
try {
//链接mongo服务器
mongo=new Mongo("127.0.0.1",27017);
//根据mongodb数据库的名称获得DB对象,连接数据库yc
db=mongo.getDB("yc");
//发送获得请求
db.requestStart();
//获得其集合
Set<String> collections=db.getCollectionNames();
Iterator itr=collections.iterator();
//迭代输出信息
while(itr.hasNext()){
System.out.println(itr.next());
}
DBCollection dbObject=db.getCollection("yc");
DBObject object=null;
//添加
object=new BasicDBObject();
object.put("_id", 1003);
object.put("name","张三");
object.put("sex","男");
WriteResult rs=dbObject.insert(object);
object.put("_id", 1002);
//移除
dbObject.remove(new BasicDBObject());
//查询所有
DBCursor cursor=dbObject.find();
while(cursor.hasNext()){
object=cursor.next();
System.out.println(object);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
if(mongo!=null){
mongo.close();
}
}
}
}
运行的结果如下:
至此,其实已经可以使用,代码的耦合太高,功能捆绑的太严重,不方便调用,
接着对其进行封装。
先定义一个属性文件:
里面定义了一些基本的配置,例如用户名,数据库名,ip,端口等。
接着定义一个类去读取其文件.这里文件的话最好被定义为单例,
package com.yc.mongodb;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
@SuppressWarnings("serial")
public class MyPro extends Properties{
private static MyPro instanece=new MyPro();
private MyPro(){
InputStream is=MyPro.class.getResourceAsStream("/db.properties");
try {
this.load(is);
} catch (IOException e) {
e.printStackTrace();
}finally{
if(is!=null){
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public static MyPro getInstance(){
return instanece;
}
}
像操作oracle一样定义一个DBHelper类,实现对数据操作的封装:
如下:
package com.yc.mongodb;
import java.net.UnknownHostException;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.Mongo;
import com.mongodb.MongoException;
public class DBHelper {
private static Mongo mongo=null;
private DB db=null;
private DBCollection collection=null;
static{
try {
mongo=new Mongo(MyPro.getInstance().getProperty("ip"),Integer.parseInt(MyPro.getInstance().getProperty("port")));
} catch (NumberFormatException e) {
e.printStackTrace();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (MongoException e) {
e.printStackTrace();
}
System.out.println(mongo);
}
/**
*
* @param dbName
* @param name
* @param pwd
* @return
*/
public boolean getDB(String dbName,String name,String pwd){
db=mongo.getDB(dbName);
if(name!=null&&!"".equals(name)&&pwd!=null&&!"".equals(pwd)){
if(db.authenticate(name, pwd.toCharArray())){
return true;
}else{
return false;
}
}else{
//查看配置文件中是否给定了用户名和密码
String uname=MyPro.getInstance().getProperty("uname");
String pwds=MyPro.getInstance().getProperty("password");
if(uname!=null&&!"".equals(uname)&&pwds!=null&&!"".equals(pwds)){
if(db.authenticate(uname, pwds.toCharArray())){
return true;
}else{
return false;
}
}
}
return true;
}
/**
* 关闭连接
* @param mongo
*/
public void closeAll(Mongo mongo){
if(mongo!=null){
mongo.close();
}
}
}
//利用方法重载实现不同情况的传参
/**
* 获取指定的集合
* @param collectionName :要链接的集合
* @param dbName:集合所在的数据库
* @return
*/
public DBCollection getDBCollection(String collectionName,String dbName){
DBCollection dBCollection=null;
if(getDB(dbName,null, null)){
db.requestStart();
if(collectionName==null){//如果为空则从配置文件中查找
collectionName=MyPro.getInstance().getProperty("collectionName");
}
dBCollection=db.getCollection(collectionName);
}else{
//抛出异常
throw new RuntimeException("数据库连接失败");
}
return dBCollection;
}
/**
*
* @param collectionName
* @param dbName
* @param name
* @param password
* @return
*/
public DBCollection getDBCollection(String collectionName,String dbName,String name,String password){
DBCollection dBCollection=null;
if(getDB(dbName,name, password)){
db.requestStart();
if(collectionName==null){//如果为空则从配置文件中查找
collectionName=MyPro.getInstance().getProperty("collectionName");
}
dBCollection=db.getCollection(collectionName);
}else{
//抛出异常
throw new RuntimeException("数据库连接失败");
}
return dBCollection;
}
/**
* 只传递集合名字
* @param collectionName
* @return
*/
public DBCollection getDBCollection(String collectionName){
DBCollection dBCollection=null;
String dbName=MyPro.getInstance().getProperty("dbName");
if(getDB(dbName,null, null)){
db.requestStart();
if(collectionName==null){//如果为空则从配置文件中查找
collectionName=MyPro.getInstance().getProperty("collectionName");
}
dBCollection=db.getCollection(collectionName);
}else{
//抛出异常
throw new RuntimeException("数据库连接失败");
}
return dBCollection;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/watering_sea/article/details/48029549