亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

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

瀏覽:93日期:2023-09-05 14:05:35

一.認識mongodb

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

二.Spring boot項目集成mongodb

1.添加mongodb依賴

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency>

2.配置mongodb的連接

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

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

3.操作數據庫

(1)保存

@Repositorypublic 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 List<ExplorationJob> getExplorationByCondition(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())); } List<ExplorationJob> explorationJobs=mongoTemplate.find(query, ExplorationJob.class); return explorationJobs; }

(8)查詢最大值

public Date getMaxExplorationDate(String tableName) { FindIterable<Document> iterable = 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 List<Document> getDocuments(FindIterable<Document> iterable) { List<Document> results = new ArrayList<Document>(); if (null != iterable) { MongoCursor<Document> cursor = iterable.iterator(); Document doc = null; while (cursor.hasNext()) {doc = cursor.next();results.add(doc); } } return results; }

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

public List<TableExploration> getAllTableExplorationGroupByTableName(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')); AggregationResults<TableExploration> aggregationResults= mongoTemplate.aggregate(aggregation, 'tableExploration', TableExploration.class); List<TableExploration> tableExplorations=aggregationResults.getMappedResults(); return tableExplorations;

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Spring
相關文章:
主站蜘蛛池模板: 日产一区二区三区精品视频 | 特级毛片aaaa免费观看 | 深夜福利1000 | 国内精品一级毛片免费看 | 日本黄色大片免费 | 久久久久久88色偷偷 | 国语三级 | 欧美性猛交xxx免费看人妖 | 久久中文字幕综合不卡一二区 | 全黄色毛片 | 久久91精品久久91综合 | 思思九九 | 欧美大片va欧美在线播放 | 精品久久久久久国产免费了 | 亚洲乱码在线 | 在线观看一级毛片 | 亚洲成在线观看 | 九九热这里只有国产精品 | 欧美伦禁片在线播放 | 国偷盗摄自产福利一区在线 | 中文字幕一区日韩在线视频 | 国产亚洲综合精品一区二区三区 | jizz大全日本护士喷奶水 | 国产一区91 | 91在线精品中文字幕 | 亚洲欧美日韩在线不卡 | 国产逼逼视频 | 手机在线观看视频你懂的 | 国产中文字幕视频 | 国产不卡a | 五月色综合婷婷综合俺来也 | 久久日本精品久久久久久 | 久久久青草青青国产亚洲免观 | 午夜剧场刺激性爽免费视频 | 欧美变态一级毛片 | 欧美特黄级乱色毛片 | 日本人伦一区二区三区 | 亚洲 欧美 日韩中文字幕一区二区 | 高清午夜毛片 | 真人女人一级毛片免费视频观看 | 视频免费网站 |