Spring Boot集成mongodb数据库
发表于:2024-10-01 作者:千家信息网编辑
千家信息网最后更新 2024年10月01日,一.认识mongodbMongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比
千家信息网最后更新 2024年10月01日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安全错误
数据库的锁怎样保障安全
陈虎网络安全
江西北斗卫星授时服务器云主机
网络技术与软件专业哪个好
怎么获取万德数据库
校园网络安全的案例分析
国内saas软件开发
网络安全卡通宣传图片
净月高新区网络安全
在线教育app开发网络技术分析
5g网络技术是哪个国家的
数据库练习
网络安全知识竞赛答题题库
远程服务器连接管理工具
地籍数据库哪年建的
网络安全案件分析
饲料配方数据库知网
数据库select关键字是
上海网络安全热线电话
数据库技术对物流企业的影响
软件开发员职位
万方数据库ppt精选
红帽系统安装达蒙数据库
ASP代码软件开发
单片机软件开发
淮南专业视频系统服务器
南京软件开发白龙马价惠
软件开发潜在失效后果分析
网络安全绘画横版
河南惠普服务器虚拟化技术云空间
给虚拟服务器安装软件