日期:2014-05-16 浏览次数:20805 次
import java.net.UnknownHostException;
import com.mongodb.DB;
import com.mongodb.Mongo;
import com.mongodb.MongoException;
public class DBTool {
private DBTool(){}
private static Mongo w ; //写
private static Mongo r; //读
static{
if (null == w) {
synchronized (DBTool.class) {
try {
w = new Mongo();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MongoException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
if (null == r) {
synchronized (DBTool.class) {
try {
r = new Mongo("10.166.112.245");
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MongoException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
public static Mongo getWriteDb() {//获取写
if (null == w) {
synchronized (w) {
try {
w = new Mongo();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MongoException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
return w;
}
public static Mongo getReadDB(){//获取读
if (null == r) {
synchronized (r) {
try {
r = new Mongo("10.16.112.245");
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MongoException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
return r;
}
public static void colse(){//关闭数据库
if (null != w) {
w.close();
}
if (null != r) {
r.close();
}
}
}
?
?
?
?
import java.util.Iterator;
import org.json.simple.JSONObject;
import org.json.simple.JSONValue;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.Mongo;
public class DBToolOper {
private Mongo m = null;
private DB d = null;
private DBCollection c = null;
public DBToolOper(String type,String dbName) {//根据传入的类型,开启读写
if ("w".equals(type)) {
m = DBTool.getWriteDb();
} else {
m = DBTool.getReadDB();
}
d = m.getDB(dbName);
}
/**
* json {x:1,y:{d:0}}
*/
public void writeJson(String json){//把转入的字符串json 转换成json对象
JSONObject jo = (JSONObject)JSONValue.parse(json);
Iterator iter = jo.keySet().iterator();
BasicDBObject doc = new BasicDBObject();
while (iter.hasNext()) {
String key = iter.next().toString();
//System.out.println("[key="+key+", val="+jo.get(key)+"]");
doc.put(key, jo.get(key));
}
if (!doc.isEmpty()) {
c.insert(doc);
}
}
public long getCount(){//获取总数
return c.getCount();
}
public void setDabase(String dbName) {//设置要访问的DB
d = m.getDB(dbName);
}
public void setTable(String tbName){//设置要访问的集合
c = d.getCollection(tbName);
}
public void printLimit(int row){//获取前row条数据
DBCursor curr = c.find().limit(row);
while(curr.hasNext())
System.out.println(curr.next());
}
public void printAll(){//打印所有数据
DBCursor curr = c.find();
while(curr.hasNext())
System.out.println(curr.next());
}
public void close(){//关闭数据库
if (null != m) {
m.close();
}
}
}
?
测试程序?
?
?主从数据库 实现读写分离
Random rm = new Random(System.currentTimeMillis());
//读写分离数据库 获取写数据库
DB dw = DBTool.getDB("w");
DBCollection collr = dw.getCollection("c2");
BasicDBObject doc = new BasicDBObject();
doc.put("name"+rm.nextInt(999999999), "MongoDB");
collr.insert(doc);
DB dr = DBTool.getDB("r");
collr = dr.getCollection("c2");
DBCursor curr = collr.find().limit(2000);
while(curr.hasNext())
System.out.println(curr.next());
DBTool.colse();
?
?登陆具有权限的数据库(用户名,密码)
Mongo m = new Mo