Spring Boot集成mongodb数据库
发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,一.认识mongodbMongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比
千家信息网最后更新 2025年01月19日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安全错误
数据库的锁怎样保障安全
微信聊天记录数据库结构
我的世界服务器生存第四天
车位引导管理服务器 捷顺
360国家网络安全部队有哪些
网络技术基础7谢希仁知识点
wdcp备份数据库
东城区定制软件开发指导
山东直播软件开发企业
网络技术实验
网络安全比喻成什么意思
数据库最底层的抽象是
软件开发搞笑段子
软件开发负责人考核指标
不履行网络安全罚款
微信小程序软件开发招聘
优雅的数据库面试
东莞市软件开发
数据库以只读方式打开
千速网络技术有限公司
数据库代理
数据库跟踪有什么用
黑客互联网科技图片
网络技术基础7谢希仁知识点
可以在哪些数据库中查找外国法律
软件开发程序员有五险一金吗
软件开发对接sql
软件开发的原因
郑州玉赛网络技术有限公司
数据库优化需要做什么
广州群彩网络技术有限公司