歡迎您光臨本站 註冊首頁

Spring Boot集成mongodb數據庫過程解析

←手機掃碼閱讀     f2h0b53ohn @ 2020-06-01 , reply:0

一.認識mongodb

MongoDB是一個介於關係數據庫和非關係數據庫之間的產品,是非關係數據庫當中功能最豐富,最像關係數據庫的。它支持的數據結構非常鬆散,是類似json的bson格式,因此可以存儲比較複雜的數據類型。Mongo最大的特點是它支持的查詢語言非常強大,其語法有點類似於面向對象的查詢語言,幾乎可以實現類似關係數據庫單表查詢的絕大部分功能,而且還支持對數據建立索引。

二.Spring boot項目集成mongodb

1.添加mongodb依賴

 org.springframework.bootspring-boot-starter-data-mongodb


2.配置mongodb的連接

spring:
data:
mongodb:
#uri: mongodb://localhost:27017/data_exploration
uri: mongodb://root:[email protected]:27017/data_exploration?authSource=admin&authMechanism=SCRAM-SHA-1

解析:以上uri分別代表本地配置和遠程連接

3.操作數據庫

(1)保存

 @Repository public class ExplorationJobDao { @Autowired MongoTemplate mongoTemplate; public void save(ExplorationJob explorationJob) { mongoTemplate.save(explorationJob); } }


(2)根據ID修改一條數據(其原理先符合ID的數據,然後刪除查詢結果的第一條)

 public void updateExecutionStatusById(int executionStatus, String jobId) { Query query = new Query(Criteria.where("jobId").is(jobId)); Update update = new Update().set("executionStatus", executionStatus); mongoTemplate.updateFirst(query, update, ExplorationJob.class); }


(3)根據條修改多條數據(查詢符合ID的所有數據,然後將所有數據修改)

 public void update(BusinessExploration businessExploration) { Query query = new Query(Criteria.where("_id").is(businessExploration.getId())); Update update = new Update().set("sourceUnit", businessExploration.getSourceUnit()) .set("appSystem", businessExploration.getAppSystem()) .set("businessImplication", businessExploration.getBusinessImplication()) .set("safetyRequire", businessExploration.getSafetyRequire()); mongoTemplate.updateMulti(query, update, TableExploration.class); }


(4)刪除(根據ID刪除)

 public void delExplorationJobById(String jobId) { Query query=new Query(Criteria.where("jobId").is(jobId)); mongoTemplate.remove(query,ExplorationJob.class); }


(5)根據條件查詢(根據ID查詢)

 public ExplorationJob getExplorationJobByJobId(String jobId) { Query query = new Query(Criteria.where("jobId").is(jobId)); ExplorationJob exploratiOnJob= mongoTemplate.findOne(query, ExplorationJob.class); return explorationJob; }


(6)查詢所有

mongoTemplate.findAll(TableExploration.class);

(7)多條件動態查詢

 public ListgetExplorationByCondition(ExplorationJob explorationJob) { Query query = new Query(); if (explorationJob.getJobName() != null) { Pattern pattern = Pattern.compile("^.*" + explorationJob.getJobName() + ".*$", Pattern.CASE_INSENSITIVE); query.addCriteria(Criteria.where("jobName").regex(pattern)); } if (explorationJob.getDsType() != null) { query.addCriteria(Criteria.where("dsType").is(explorationJob.getDsType())); } if (explorationJob.getExecutionStatus() != null) { query.addCriteria(Criteria.where("executionStatus").lte(explorationJob.getExecutionStatus())); } ListexploratiOnJobs=mongoTemplate.find(query, ExplorationJob.class); return explorationJobs; }


(8)查詢最大值

 public Date getMaxExplorationDate(String tableName) { FindIterableiterable = mongoTemplate.getCollection("tableExploration") .find(new BasicDBObject("tableName", tableName)).sort(new BasicDBObject("explorationDate", -1)).skip(0) .limit(1); Document doc =null; if (getDocuments(iterable).size()>0) { doc=getDocuments(iterable).get(0); Date date = doc.getDate("explorationDate"); return date; }else { return null; } } /** * 工具方法 * * @param iterable * @return */ public static ListgetDocuments(FindIterableiterable) { Listresults = new ArrayList(); if (null != iterable) { MongoCursorcursor = iterable.iterator(); Document doc = null; while (cursor.hasNext()) { doc = cursor.next(); results.add(doc); } } return results; }


(9)分組查詢(這裡還是用到了排序)

 public ListgetAllTableExplorationGroupByTableName(String jobId){ Aggregation aggregation = Aggregation.newAggregation( Aggregation.match(Criteria.where("jobId").is(jobId)), Aggregation.sort(new Sort(Direction.DESC,"explorationDate")), Aggregation.group("tableName") .first("_id").as("tableName") .first("databaseType").as("databaseType") .first("databaseName").as("databaseName") .first("networkSituation").as("networkSituation") .first("userName").as("userName") .first("password").as("password") .first("url").as("url") .first("dataStorage").as("dataStorage") .first("dataIncrement").as("dataIncrement") .first("explorationDate").as("explorationDate") //.push("columnExplorations").as("columnExplorations") .first("jobId").as("jobId") ); AggregationResultsaggregatiOnResults= mongoTemplate.aggregate(aggregation, "tableExploration", TableExploration.class); ListtableExploratiOns=aggregationResults.getMappedResults(); return tableExplorations;



[f2h0b53ohn ] Spring Boot集成mongodb數據庫過程解析已經有106次圍觀

http://coctec.com/docs/java/show-post-236546.html