power bulder和mysql_MongoDB之Java测试代码(DAO层)

MongoInit.java是数据库初始化及连接类 MongoUtils.java是对mongodb的各种操作方法 MongoInit.java package com.wlwcloud.datatest;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.net.UnknownHostException;i

MongoInit.java是数据库初始化及连接类

MongoUtils.java是对mongodb的各种操作方法

MongoInit.java

package com.wlwcloud.datatest;

import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

import java.net.UnknownHostException;

import java.util.Properties;

import org.apache.log4j.Logger;

import com.mongodb.DB;

import com.mongodb.DBCollection;

import com.mongodb.Mongo;

import com.mongodb.MongoOptions;

import com.mongodb.ServerAddress;

/**

* Mongo工具类:设计为单例模式,每当月份发生变化,数据库连接名称就会发生变化,这是业务规则 因MongoDB的Java驱动是线程安全的,对于一般的应用,只要一个Mongo实例即可,Mongo有个内置的连接池(池大小默认为10个)。

* 对于有大量写和读的环境中,为了确保在一个Session中使用同一个DB时,我们可以用以下方式保证一致性: DB mdb =mongo.getDB('dbname'); mdb.requestStart(); // 业务代码 mdb.requestDone();

* DB和DBCollection是绝对线程安全的

* @author undoner

*/

public class MongoInit {

/** DB监听端口号 */

private static int DBPort = 27017;

/** DB连接URL */

private static String DBUrl = "localhost";

/** 连接DB库名称 */

private static String DBName = "wlwdb";

static Logger log = Logger.getRootLogger();

private static Mongo mongo;

private static DBCollection coll;

private static DB db;

static {

try {

DBproperties();

MongoOptions options = new MongoOptions();

options.autoConnectRetry = true;

options.connectionsPerHost = 1000;

options.maxWaitTime = 5000;

options.socketTimeout = 0;

options.connectTimeout = 15000;

options.threadsAllowedToBlockForConnectionMultiplier = 5000;

// 事实上,Mongo实例代表了一个数据库连接池,即使在多线程的环境中,一个Mongo实例对我们来说已经足够了

ServerAddress serverAddress = new ServerAddress(DBUrl, DBPort);

mongo = new Mongo(serverAddress, options);

} catch (UnknownHostException e) {

log.info("get mongo instance failed");

}

}

static void DBproperties() {

// 读取配置文件config.properties中的属性值

String myFilePath = MongoInit.class.getResource("/").getPath() + "MongoDBConfig.properties";

Properties properties = new Properties();

FileInputStream fileInputStream = null;

try {

fileInputStream = new FileInputStream(myFilePath);

properties.load(fileInputStream);

DBPort = Integer.parseInt((String) properties.getProperty("DBPort"));

DBUrl = (String) properties.getProperty("DBUrl");

DBName = (String) properties.getProperty("DBName");

} catch (Exception e) {

e.printStackTrace();

} finally {

try {

fileInputStream.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

public static DB getDB() {

if (db == null) {

db = mongo.getDB(DBName);

}

return db;

}

public static Mongo getMong() {

return mongo;

}

public static DBCollection getColl(String collname) {

return getDB().getCollection(collname);

}

}

package com.wlwcloud.datatest;

import java.net.UnknownHostException;

import java.text.SimpleDateFormat;

import java.util.ArrayList;

import java.util.Date;

import java.util.List;

import java.util.Set;

import java.util.regex.Pattern;

import com.fasterxml.jackson.core.JsonProcessingException;

import com.fasterxml.jackson.databind.ObjectMapper;

import com.ketayao.ketacustom.entity.main.User;

import com.ketayao.utils.SecurityUtils;

import com.mongodb.AggregationOutput;

import com.mongodb.BasicDBList;

import com.mongodb.BasicDBObject;

import com.mongodb.BasicDBObjectBuilder;

import com.mongodb.DB;

import com.mongodb.DBCollection;

import com.mongodb.DBCursor;

import com.mongodb.DBObject;

import com.mongodb.MapReduceCommand;

import com.mongodb.MapReduceOutput;

import com.mongodb.Mongo;

import com.mongodb.MongoException;

import com.mongodb.QueryBuilder;

import com.mongodb.WriteConcern;

public class MongoUtils {

//DBCursor cursor = coll.find(condition).addOption(Bytes.QUERYOPTION_NOTIMEOUT);//设置游标不要超时

/**

* 获取所有数据库实例

*/

public void testGetDBS() {

Listdbnames = MongoInit.getMong().getDatabaseNames();

for (String dbname : dbnames) {

System.out.println("dbname:" + dbname);

}

}

/**

* 删除数据库

*/

public void dropDatabase(String dbname) {

MongoInit.getMong().dropDatabase(dbname);

}

/**

* 查询所有表名

*/

public void getAllCollections() {

Setcolls = MongoInit.getDB().getCollectionNames();

for (String s : colls) {

System.out.println("Collections:"+s);

}

}

/**

* 删除一个表

*/

public void dropCollection(String collection) {

MongoInit.getColl(collection).drop();

}

/**

* 添加一条记录

*/

public void addData(String dbCollection,String dataID,String dataTime,String dataContent,String dataStatus) {

DBCollection coll = MongoInit.getColl(dbCollection);

BasicDBObject doc = new BasicDBObject();

doc.put("id", dataID);

doc.put("time", dataTime);

doc.put("data", dataContent);

doc.put("status", dataStatus);

coll.insert(doc);

// 设定write concern,以便操作失败时得到提示

coll.setWriteConcern(WriteConcern.SAFE);

findOne(dbCollection);

}

/**

* 创建索引

*/

public void createIndex(String collection) {

MongoInit.getColl(collection).createIndex(new BasicDBObject("index_id", 1));

}

/**

* 获取索引信息

*/

public void getIndexInfo(String dbCollection) {

Listlist = MongoInit.getColl(dbCollection).getIndexInfo();

for (DBObject o : list) {

System.out.println(o);

}

}

/**

* 添加多条记录

*/

public void addMultiData() {

for (int i = 0; i < 100; i++) {

MongoInit.getColl("wujintao").insert(

new BasicDBObject().append("i", i));

}

Listdocs = new ArrayList();

for (int i = 0; i < 50; i++) {

docs.add(new BasicDBObject().append("i", i));

}

MongoInit.getColl("wujintao").insert(docs);

// 设定write concern,以便操作失败时得到提示

MongoInit.getColl("wujintao").setWriteConcern(WriteConcern.SAFE);

}

/**

* 查找第一条记录

*/

public void findOne(String dbCollection) {

DBObject myDoc = MongoInit.getColl(dbCollection).findOne();

System.out.println(myDoc);

}

/**

* 获取表中所有记录条数

*/

public void count(String dbCollection) {

System.out.println(MongoInit.getColl(dbCollection).getCount());

System.out.println(MongoInit.getColl(dbCollection).count());

}

/**

* 获取查询结果集的记录数

*/

public void getCount(String dbCollection,String dataID) {

DBObject query = new BasicDBObject("id", dataID);

long count = MongoInit.getColl(dbCollection).count(query);

System.out.println(count);

}

/**

* 查询所有结果

*/

public void getAllDocuments(String dbCollection) {

DBCursor cursor = MongoInit.getColl(dbCollection).find();

try {

while (cursor.hasNext()) {

System.out.println(cursor.next());

}

} finally {

cursor.close();

}

}

/**

* 按照一个条件查询

*/

public void queryByConditionOne() {

BasicDBObject query = new BasicDBObject();

query.put("name", "MongoDB");

DBCursor cursor = MongoInit.getColl("wujintao").find(query);

try {

while (cursor.hasNext()) {

System.out.println(cursor.next());

}

} finally {

cursor.close();

}

}

public ListqueryById(String id) {

User user = SecurityUtils.getLoginUser();

BasicDBObject query = new BasicDBObject();

System.out.print(id);

query.put("id", id);

String table="table_";

DBCursor cursor = MongoInit.getColl("table_"+user.getUsername()).find(query);

Listlist=cursor.toArray();

System.out.println(list.size());

System.out.println("dao.."+list.toString());

Listsensordata=new ArrayList();

for(int i=1;i50

*/

public void queryMulti2() {

BasicDBObject query = new BasicDBObject();

query = new BasicDBObject();

query.put("i", new BasicDBObject("$gt", 50)); // e.g. find all where i >

DBCursor cursor = MongoInit.getColl("wujintao").find(query);

try {

while (cursor.hasNext()) {

System.out.println(cursor.next());

}

} finally {

cursor.close();

}

}

/**

* 区间查询

* select * from table where 20 < i <= 30

//比较符

//"$gt": 大于

//"$gte":大于等于

//"$lt": 小于

//"$lte":小于等于

//"$in": 包含

*/

public void queryMulti3() {

BasicDBObject query = new BasicDBObject();

query = new BasicDBObject();

query.put("i", new BasicDBObject("$gt", 20).append("$lte", 30));

DBCursor cursor = MongoInit.getColl("wujintao").find(query);

try {

while (cursor.hasNext()) {

System.out.println(cursor.next());

}

} finally {

cursor.close();

}

}

/**

* 组合in和and select * from test_Table where (a=5 or b=6) and (c=5 or d = 6)

*/

public void queryMulti4() {

BasicDBObject query11 = new BasicDBObject();

query11.put("a", 1);

BasicDBObject query12 = new BasicDBObject();

query12.put("b", 2);

ListorQueryList1 = new ArrayList();

orQueryList1.add(query11);

orQueryList1.add(query12);

BasicDBObject orQuery1 = new BasicDBObject("$or", orQueryList1);

BasicDBObject query21 = new BasicDBObject();

query21.put("c", 5);

BasicDBObject query22 = new BasicDBObject();

query22.put("d", 6);

ListorQueryList2 = new ArrayList();

orQueryList2.add(query21);

orQueryList2.add(query22);

BasicDBObject orQuery2 = new BasicDBObject("$or", orQueryList2);

ListorQueryCombinationList = new ArrayList();

orQueryCombinationList.add(orQuery1);

orQueryCombinationList.add(orQuery2);

BasicDBObject finalQuery = new BasicDBObject("$and",

orQueryCombinationList);

DBCursor cursor = MongoInit.getColl("wujintao").find(finalQuery);

}

/**

* IN查询

* if i need to query name in (a,b); just use { name : { $in : ['a', 'b'] } }

* select * from things where name='a' or name='b'

* @param coll

*/

public void queryIn() {

BasicDBList values = new BasicDBList();

values.add("a");

values.add("b");

BasicDBObject in = new BasicDBObject("$in", values);

DBCursor cursor = MongoInit.getColl("wujintao").find(

new BasicDBObject("name", in));

try {

while (cursor.hasNext()) {

System.out.println(cursor.next());

}

} finally {

cursor.close();

}

}

/**

* 或查询

* select * from table where name = '12' or title = 'p'

* @param coll

*/

public void queryOr() {

QueryBuilder query = new QueryBuilder();

query.or(new BasicDBObject("name", 12), new BasicDBObject("title", "p"));

DBCursor cursor = MongoInit.getColl("wujintao").find(query.get()).addSpecial("$returnKey", "");

try {

while (cursor.hasNext()) {

System.out.println(cursor.next());

}

} finally {

cursor.close();

}

}

public void customQueryField() throws UnknownHostException{

Mongo mongo = new Mongo("localhost", 27017);

DB db = mongo.getDB("zhongsou_ad");

BasicDBObjectBuilder bulder = new BasicDBObjectBuilder();

bulder.add("times",1);

bulder.add("aid",1);

DBCursor cusor = db.getCollection("ad_union_ad_c_1").find(new BasicDBObject(),bulder.get());

for (DBObject dbObject : cusor) {

System.out.println(dbObject);

}

}

public void mapReduce() throws UnknownHostException{

Mongo mongo = new Mongo("localhost", 27017);

DB db = mongo.getDB("zhongsou_ad");

/***

* book1 = {name : "Understanding JAVA", pages : 100}

* book2 = {name : "Understanding JSON", pages : 200}

* db.books.save(book1)

* db.books.save(book2)

* book = {name : "Understanding XML", pages : 300}

* db.books.save(book)

* book = {name : "Understanding Web Services", pages : 400}

* db.books.save(book)

* book = {name : "Understanding Axis2", pages : 150}

* db.books.save(book)

*

var map = function() {

var category;

if ( this.pages >= 250 )

category = 'Big Books';

else

category = "Small Books";

emit(category, {name: this.name});

};

var reduce = function(key, values) {

var sum = 0;

values.forEach(function(doc) {

sum += 1;

});

return {books: sum};

};

var count = db.books.mapReduce(map, reduce, {out: "book_results"});

*/

try {

DBCollection books = db.getCollection("books");

BasicDBObject book = new BasicDBObject();

book.put("name", "Understanding JAVA");

book.put("pages", 100);

books.insert(book);

book = new BasicDBObject();

book.put("name", "Understanding JSON");

book.put("pages", 200);

books.insert(book);

book = new BasicDBObject();

book.put("name", "Understanding XML");

book.put("pages", 300);

books.insert(book);

book = new BasicDBObject();

book.put("name", "Understanding Web Services");

book.put("pages", 400);

books.insert(book);

book = new BasicDBObject();

book.put("name", "Understanding Axis2");

book.put("pages", 150);

books.insert(book);

String map = "function() { "+

"var category; " +

"if ( this.pages >= 250 ) "+

"category = 'Big Books'; " +

"else " +

"category = 'Small Books'; "+

"emit(category, {name: this.name});}";

String reduce = "function(key, values) { " +

"var sum = 0; " +

"values.forEach(function(doc) { " +

"sum += 1; "+

"}); " +

"return {books: sum};} ";

MapReduceCommand cmd = new MapReduceCommand(books, map, reduce,

null, MapReduceCommand.OutputType.INLINE, null);

MapReduceOutput out = books.mapReduce(cmd);

for (DBObject o : out.results()) {

System.out.println(o.toString());

}

} catch (Exception e) {

e.printStackTrace();

}

}

public void GroupByManyField() throws UnknownHostException{

//此方法没有运行成功

Mongo mongo = new Mongo("localhost", 27017);

DB db = mongo.getDB("libary");

DBCollection books = db.getCollection("books");

BasicDBObject groupKeys = new BasicDBObject();

groupKeys.put("total", new BasicDBObject("$sum","pages"));

BasicDBObject condition = new BasicDBObject();

condition.append("pages", new BasicDBObject().put("$gt", 0));

String reduce = "function(key, values) { " +

"var sum = 0; " +

"values.forEach(function(doc) { " +

"sum += 1; "+

"}); " +

"return {books: sum};} ";

/**

BasicDBList basicDBList = (BasicDBList)db.getCollection("mongodb中集合编码或者编码")

.group(DBObject key, --分组字段,即group by的字段

DBObject cond, --查询中where条件

DBObject initial, --初始化各字段的值

String reduce, --每个分组都需要执行的Function

String finial --终结Funciton对结果进行最终的处理

*/

DBObject obj = books.group(groupKeys, condition, new BasicDBObject(), reduce);

System.out.println(obj);

AggregationOutput ouput = books.aggregate(new BasicDBObject("$group",groupKeys));

System.out.println(ouput.getCommandResult());

System.out.println(books.find(new BasicDBObject("$group",groupKeys)));

}

/**

* 分页查询

*/

public void pageQuery() {

DBCursor cursor = MongoInit.getColl("wujintao").find().skip(0)

.limit(10);

while (cursor.hasNext()) {

System.out.println(cursor.next());

}

}

/**

* 模糊查询

*/

public void likeQuery() {

Pattern john = Pattern.compile("joh?n");

BasicDBObject query = new BasicDBObject("name", john);

// finds all people with "name" matching /joh?n/i

DBCursor cursor = MongoInit.getColl("wujintao").find(query);

}

/**

* 条件删除

*/

public void delete(String dbCollection,String dataID) {

BasicDBObject query = new BasicDBObject();

query.put("id", dataID);

// 找到并且删除,并返回删除的对象

DBObject removeObj = MongoInit.getColl(dbCollection).findAndRemove(query);

System.out.println(removeObj);

}

/**

* 更新

*/

public void update() {

BasicDBObject query = new BasicDBObject();

query.put("name", "liu");

DBObject stuFound = MongoInit.getColl("wujintao").findOne(query);

stuFound.put("name", stuFound.get("name") + "update_1");

MongoInit.getColl("wujintao").update(query, stuFound);

}

public void testGpsData() {

try {

//13862082455:117.13172:029.77659:131.2580

Date d = new Date();

SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");

String dateNowStr = sdf.format(d);

System.out.println(dateNowStr);

DBCollection coll = MongoInit.getColl("table_admin");

BasicDBObject doc = new BasicDBObject();

doc.put("id", "12345678");

doc.put("time", dateNowStr);

doc.put("data", "117.13172:029.77659:131.2580");

doc.put("status", "0");

coll.insert(doc);

// 设定write concern,以便操作失败时得到提示

coll.setWriteConcern(WriteConcern.SAFE);

BasicDBObject dsort = new BasicDBObject();

dsort.put("time", -1);

BasicDBObject searchDevice = new BasicDBObject();

searchDevice.put("id", "12345678");

DBCursor cursor = coll.find(searchDevice).sort(dsort);

Listlist = cursor.toArray();

//ArrayListlistSensorData=new ArrayList(list.size());

ObjectMapper mapper = new ObjectMapper();

String jsonfromList = null;

try {

//list转json

jsonfromList = mapper.writeValueAsString(list);

} catch (JsonProcessingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

//System.out.println(jsonfromList);

//for(int i=0;i#端口设置

DBPort=27017

#URL

DBUrl=localhost

#URL

DBName=wlwdb

f68f2add0b68e4f9810432fce46917b7.png

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值