Mongodb整合Maven,Spring项目参考
来源:互联网 发布:防晒霜身体户外知乎 编辑:程序博客网 时间:2024/06/07 07:03
最近后台需要写mongodb与spring项目的整合接口,参阅了网上资料后自己写出了几个方法来分享参考
一:maven引用
<!-- https://mvnrepository.com/artifact/org.mongodb/mongo-java-driver --><dependency><groupId>org.mongodb</groupId><artifactId>mongo-java-driver</artifactId><version>3.2.2</version></dependency>
3.2版本以上的都可以,按照个人喜好就行
二:连接mongo配置
package com.suncar.core.util;import com.mongodb.MongoClient;import com.mongodb.client.MongoDatabase;public class MongoHelper { static final String DBName = "abc"; static final String ServerAddress = "127.0.0.1"; static final int PORT = 27017; public MongoHelper(){ } public MongoClient getMongoClient( ){ MongoClient mongoClient = null; try { // 连接到 mongodb 服务 mongoClient = new MongoClient(ServerAddress, PORT); System.out.println("Connect to mongodb successfully"); } catch (Exception e) { System.err.println(e.getClass().getName() + ": " + e.getMessage()); } return mongoClient; } public MongoDatabase getMongoDataBase(MongoClient mongoClient) { MongoDatabase mongoDataBase = null; try { if (mongoClient != null) { // 连接到数据库 mongoDataBase = mongoClient.getDatabase(DBName); System.out.println("Connect to DataBase successfully"); } else { throw new RuntimeException("MongoClient不能够为空"); } } catch (Exception e) { e.printStackTrace(); } return mongoDataBase; } public void closeMongoClient(MongoDatabase mongoDataBase,MongoClient mongoClient ) { if (mongoDataBase != null) { mongoDataBase = null; } if (mongoClient != null) { mongoClient.close(); } System.out.println("CloseMongoClient successfully"); } }连接服务器地址与数据库都可以定义到config配置里,因项目没有需求暂时不用考虑
三:Dao层编写
package com.suncar.core.dao;import java.util.ArrayList;import java.util.List;import java.util.Map;import org.bson.Document;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.stereotype.Repository;import com.mongodb.BasicDBObject;import com.mongodb.MongoClient;import com.mongodb.client.FindIterable;import com.mongodb.client.MongoCollection;import com.mongodb.client.MongoCursor;import com.mongodb.client.MongoDatabase;import com.mongodb.client.result.DeleteResult;import com.mongodb.client.result.UpdateResult;import com.mongodb.util.JSON;import com.suncar.core.util.MongoHelper;@Repositorypublic class MongoDbDao {MongoHelper mongoHelper = new MongoHelper();MongoClient mongoClient = mongoHelper.getMongoClient();MongoDatabase mongoDataBase = mongoHelper.getMongoDataBase(mongoClient);public static final Logger logger = LoggerFactory.getLogger(MongoDbDao.class);public Map<String, Integer> queryByID(String table,Object Id) throws Exception {MongoCollection<Document> collection = mongoDataBase.getCollection(table);BasicDBObject query = new BasicDBObject("_id", Id);// DBObject接口和BasicDBObject对象:表示一个具体的记录,BasicDBObject实现了DBObject,是key-value的数据结构,用起来和HashMap是基本一致的。FindIterable<Document> iterable = collection.find(query);Map<String, Integer> jsonStrToMap = null;MongoCursor<Document> cursor = iterable.iterator();while (cursor.hasNext()) {Document user = cursor.next();String jsonString = user.toJson();jsonStrToMap = jsonStrToMap(jsonString);// 这里用到我自己写的方法,主要是包json字符串转换成map格式,为后面做准备,方法放在后面}System.out.println("检索ID完毕");return jsonStrToMap;} /** * 根据一个doc,来检索,当doc是空的时候检索全部 * @param db * @param table * @param doc */ public List<Map<String,Integer>> queryByDoc(String table, BasicDBObject doc) { MongoCollection<Document> collection = mongoDataBase.getCollection(table); FindIterable<Document> iterable = collection.find(doc); /** * 1. 获取迭代器FindIterable<Document> * 2. 获取游标MongoCursor<Document> * 3. 通过游标遍历检索出的文档集合 * */ List<Map<String,Integer>> list = new ArrayList<Map<String,Integer>>(); MongoCursor<Document> cursor = iterable.iterator(); while (cursor.hasNext()) { Document user = cursor.next(); String jsonString = user.toJson(); Map<String, Integer> jsonStrToMap = jsonStrToMap(jsonString); list.add(jsonStrToMap); } System.out.println("检索doc完毕"); return list; } /** * 检索全部并返回迭代器 * @param db * @param table */ public List<Map<String,Integer>> queryAll(String table) { MongoCollection<Document> collection = mongoDataBase.getCollection(table); FindIterable<Document> iterable = collection.find(); List<Map<String,Integer>> list = new ArrayList<Map<String,Integer>>(); MongoCursor<Document> cursor = iterable.iterator(); while (cursor.hasNext()) { Document user = cursor.next(); String jsonString = user.toJson(); Map<String, Integer> jsonStrToMap = jsonStrToMap(jsonString); list.add(jsonStrToMap); } System.out.println("检索全部完毕"); return list; } /** * 便利迭代器FindIterable<Document> */ public void printFindIterable(FindIterable<Document> iterable){ MongoCursor<Document> cursor = iterable.iterator(); while (cursor.hasNext()) { Document user = cursor.next(); System.out.println(user.toJson()); } cursor.close(); } public boolean insert(String table, Document document) { MongoCollection<Document> collection = mongoDataBase.getCollection(table); collection.insertOne(document); long count = collection.count(document); System.out.println("count: "+count); if(count == 1){ System.out.println("文档插入成功"); return true; }else{ System.out.println("文档插入成功"); return false; } }/** * insert many * * @param db * @param table * @param document */public boolean insertMany(String table,List<Document> documents) {MongoCollection<Document> collection = mongoDataBase.getCollection(table);long preCount = collection.count();collection.insertMany(documents);long nowCount = collection.count();System.out.println("插入的数量: " + (nowCount - preCount));if ((nowCount - preCount) == documents.size()) {System.out.println("文档插入多个成功");return true;} else {System.out.println("文档插入多个失败");return false;}}public boolean delete( String table, BasicDBObject document) {MongoCollection<Document> collection = mongoDataBase.getCollection(table);DeleteResult deleteManyResult = collection.deleteMany(document);long deletedCount = deleteManyResult.getDeletedCount();System.out.println("删除的数量: " + deletedCount);if (deletedCount > 0) {System.out.println("文档删除多个成功");return true;} else {System.out.println("文档删除多个失败");return false;}}/** * 删除一个 * * @param db * @param table * @param document */public boolean deleteOne(String table,BasicDBObject document) {MongoCollection<Document> collection = mongoDataBase.getCollection(table);DeleteResult deleteOneResult = collection.deleteOne(document);long deletedCount = deleteOneResult.getDeletedCount();System.out.println("删除的数量: " + deletedCount);if (deletedCount == 1) {System.out.println("文档删除一个成功");return true;} else {System.out.println("文档删除一个失败");return false;}}public boolean update( String table,BasicDBObject whereDoc, BasicDBObject updateDoc) {MongoCollection<Document> collection = mongoDataBase.getCollection(table);UpdateResult updateManyResult = collection.updateMany(whereDoc,new Document("$set", updateDoc));long modifiedCount = updateManyResult.getModifiedCount();System.out.println("修改的数量: " + modifiedCount);if (modifiedCount > 0) {System.out.println("文档更新多个成功");return true;} else {System.out.println("文档更新失败");return false;}}/** * update one Data * * @param db * @param table * @param whereDoc * @param updateDoc */public boolean updateOne( String table,BasicDBObject whereDoc, BasicDBObject updateDoc) {MongoCollection<Document> collection = mongoDataBase.getCollection(table);UpdateResult updateOneResult = collection.updateOne(whereDoc,new Document("$set", updateDoc));long modifiedCount = updateOneResult.getModifiedCount();System.out.println("修改的数量: " + modifiedCount);if (modifiedCount == 1) {System.out.println("文档更新一个成功");return true;} else {System.out.println("文档更新失败");return false;}}/** * create collection * * @param db * @param table */public void createCol( String table) {mongoDataBase.createCollection(table);System.out.println("集合创建成功");}/** * drop a collection * * @param db * @param table */public void dropCol(String table) {mongoDataBase.getCollection(table).drop();System.out.println("集合删除成功");}public static Map<String, Integer> jsonStrToMap(String jsonString) {Object parseObj = JSON.parse(jsonString); // 反序列化 把json 转化为对象Map<String, Integer> map = (Map<String, Integer>) parseObj; // 把对象转化为mapreturn map;}}这是参考其他作者的dao方法,个人修改了一些方法,可以更方便的适用于java
四:Service层
package com.suncar.core.services;import java.util.List;import java.util.Map;import org.bson.Document;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import com.mongodb.BasicDBObject;import com.suncar.core.dao.MongoDbDao;@Servicepublic class MongodbService {@Autowiredprivate MongoDbDao mongodbdao; /** * 获取当前表下所有数据 * @param table * @return */public List<Map<String,Integer>> queryAll(String table){return mongodbdao.queryAll(table);}/** * 插入数据 * @param table * @param document * @return */public boolean insert(String table, Document document){return mongodbdao.insert(table,document);}/** * 删除一个 * @param table * @param document * @return */public boolean deleteOne(String table, BasicDBObject document){return mongodbdao.deleteOne(table, document);}/** * 删除所有 * @param table * @param document * @return */public boolean delete(String table, BasicDBObject document){return mongodbdao.delete(table, document);}/** * 更新一个 * @param table * @param whereDoc * @param updateDoc * @return */public boolean updateOne(String table,BasicDBObject whereDoc, BasicDBObject updateDoc){return mongodbdao.updateOne(table, whereDoc, updateDoc);}/** * 更新所有 * @param table * @param whereDoc * @param updateDoc * @return */public boolean update(String table,BasicDBObject whereDoc, BasicDBObject updateDoc){return mongodbdao.update(table, whereDoc, updateDoc);}}基本都是调用dao的方法,不过整合了spring作为接口更方便易用
阅读全文
0 0
- Mongodb整合Maven,Spring项目参考
- MongoDB整合Spring(Maven项目)
- Spring整合MongoDB详细讲解(maven项目)
- MongoDB与Spring、Maven整合
- SpringMvc整合mongodb maven项目
- maven拆分项目spring spring-mybatis 整合
- maven构建spring mvc项目 + Mybatis整合
- maven构建spring mvc项目 + Mybatis整合
- maven构建spring mvc项目 + Mybatis整合
- Spring整合Redis数据库(maven项目)
- Spring+SpringMVC+MyBaits+Druid+Maven项目整合
- Spring+SpringMVC+Mybatis 整合【非maven项目】
- springmvc-mongodb-maven整合
- springmvc mongodb maven 整合
- SpringMVC+MongoDB+Maven整合
- [参考]spring整合redis!
- 【参考】spring整合activemq
- Spring整合- mongodb
- RecyclerView$LayoutManager.onMeasure(android.support.v7.widget.RecyclerView$Recycler, android.suppor
- 同一个Textview设置不同颜色等效果
- 二叉树基本操作,非递归中序、后序遍历二叉树
- unity开发 斗地主算法—比较两个手牌的大小
- 98. Validate Binary Search Tree
- Mongodb整合Maven,Spring项目参考
- bootstrap table 表头和内容没有对齐的问题
- Spring AOP
- SPOJ Optimal Marks 最小割
- 概率论习题(持续更新)
- 如何在vue中使用sass
- VideoView的使用
- 文件下载
- 5种快速实现『App界面内容自由复制功能』的TextView方法,哪种效果最佳