国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Spring Boot集成mongodb數(shù)據(jù)庫(kù)過(guò)程解析

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

一.認(rèn)識(shí)mongodb

MongoDB是一個(gè)介于關(guān)系數(shù)據(jù)庫(kù)和非關(guān)系數(shù)據(jù)庫(kù)之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫(kù)當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫(kù)的。它支持的數(shù)據(jù)結(jié)構(gòu)非常松散,是類似json的bson格式,因此可以存儲(chǔ)比較復(fù)雜的數(shù)據(jù)類型。Mongo最大的特點(diǎn)是它支持的查詢語(yǔ)言非常強(qiáng)大,其語(yǔ)法有點(diǎn)類似于面向?qū)ο蟮牟樵冋Z(yǔ)言,幾乎可以實(shí)現(xiàn)類似關(guān)系數(shù)據(jù)庫(kù)單表查詢的絕大部分功能,而且還支持對(duì)數(shù)據(jù)建立索引。

二.Spring boot項(xiàng)目集成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分別代表本地配置和遠(yuǎn)程連接

3.操作數(shù)據(jù)庫(kù)

(1)保存

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

(2)根據(jù)ID修改一條數(shù)據(jù)(其原理先符合ID的數(shù)據(jù),然后刪除查詢結(jié)果的第一條)

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)根據(jù)條修改多條數(shù)據(jù)(查詢符合ID的所有數(shù)據(jù),然后將所有數(shù)據(jù)修改)

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)刪除(根據(jù)ID刪除)

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

(5)根據(jù)條件查詢(根據(jù)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)多條件動(dòng)態(tài)查詢

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;

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 午夜看毛片 | 日本三级香港三级乳网址 | 日韩午夜视频在线观看 | 狠狠色狠狠色综合日日32 | 加勒比综合网 | 女让张开腿让男人桶视频 | 欧美人成一本免费观看视频 | 中国一级特黄真人毛片 | 视频一区 在线 | 免费a级毛片视频 | 国产精品无码久久av | 91精品国产欧美一区二区 | 天天看片天天爽_免费播放 天天看夜夜 | 日本一区二区三区精品视频 | 日韩欧美成人乱码一在线 | 精品国产网站 | 大学生久久香蕉国产线观看 | 免费韩国美女爽快一级毛片 | 在线黄网 | 免费中国一级啪啪片 | 成人手机在线视频 | 韩国福利影视一区二区三区 | 美国一级片在线观看 | 亚洲三级网址 | 亚洲精品中文字幕一区 | 一级成人毛片免费观看欧美 | yy毛片 | 黄色美女在线观看 | 日本一线一区二区三区免费视频 | 在线精品视频在线观看高清 | 黄色影院在线 | 亚洲精品久久一区二区无卡 | 99久久九九| 看欧美毛片一级毛片 | 午夜毛片免费观看视频 | 欧美三区在线 | 一级毛片a免费播放王色 | 国产成人亚洲精品久久 | 91久久综合九色综合欧美98 | 亚洲日韩视频免费观看 | 8888奇米四色在线 |