Spring Boot集成mongodb数据库
发表于:2025-11-06 作者:千家信息网编辑
千家信息网最后更新 2025年11月06日,一.认识mongodbMongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比
千家信息网最后更新 2025年11月06日Spring Boot集成mongodb数据库
一.认识mongodb
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
二.Spring boot项目集成mongodb
1.添加mongodb依赖
org.springframework.boot spring-boot-starter-data-mongodb 2.配置mongodb的连接
spring: data: mongodb: #uri: mongodb://localhost:27017/data_exploration uri: mongodb://root:dhcc-mongodb@192.168.100.87: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 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 explorationJobs=mongoTemplate.find(query, ExplorationJob.class); return explorationJobs; } (8)查询最大值
public Date getMaxExplorationDate(String tableName) { FindIterable 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 getDocuments(FindIterable iterable) { List results = new ArrayList(); if (null != iterable) { MongoCursor cursor = iterable.iterator(); Document doc = null; while (cursor.hasNext()) { doc = cursor.next(); results.add(doc); } } return results; } (9)分组查询(这里还是用到了排序)
public List 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 aggregationResults= mongoTemplate.aggregate(aggregation, "tableExploration", TableExploration.class); List tableExplorations=aggregationResults.getMappedResults(); return tableExplorations; 【常用操作总结完毕】
数据
查询
数据库
支持
最大
功能
条件
语言
配置
复杂
强大
松散
之间
产品
代表
动态
原理
多条
对象
工具
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
大学数据库听不懂咋办
职高网络技术好不好
地铁通讯网络技术应用
模拟手机服务器
秦皇岛网络安全教育平台登录
服务器怎么做raid1
乌班图连接到服务器超时
国动网络技术有限公司待遇
戴尔服务器插显示器如何关机
电脑服务器的配置
大专学网络技术就业前景
西安电子科技网络安全创新中心
十堰iptv服务器费用
体验服的服务器未响应是什么意思
增强网络安全的警示语
网络安全小报电子版文档
成都优推互联网科技有限公司
台州用友软件开发公司
网络安全厂家型号las
长沙网络安全手抄报
上海办公系统软件开发正规平台
便利店商品条码数据库图片
网络安全法 山西
数据库如何导库
徐汇区数字led大屏服务器
c 计算机软件开发招聘信息
从数据库中取出文件
数据库备份修改
腾讯云 远程连接数据库
最大服务器内存