Springboot最简单的整合使用Mongodb案例

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: Springboot最简单的整合使用Mongodb案例

创建一个springboot项目


然后pom.xml文件:(从pom文件里面可以看出,就一个包导入就可以了。)


1.<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.jc</groupId>
   <artifactId>mongodemo</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <packaging>jar</packaging>
   <name>mongodemo</name>
   <description>Demo project for Spring Boot</description>
   <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>2.0.5.RELEASE</version>
      <relativePath/> <!-- lookup parent from repository -->
   </parent>
   <properties>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
      <java.version>1.8</java.version>
   </properties>
   <dependencies>
      <!--mongodb的包-->
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-data-mongodb</artifactId>
      </dependency>
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-web</artifactId>
      </dependency>
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-test</artifactId>
         <scope>test</scope>
      </dependency>
   </dependencies>
   <build>
      <plugins>
         <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
         </plugin>
      </plugins>
   </build>
</project>


然后,yml文件:


spring:
  data:
    mongodb:
      uri: mongodb://IP地址:端口(27017或者你设置的)/(数据库的名称)


到此,配置的条条框框(虽然没啥)已经搞完,那么我们开始进入使用环节。


第一步是干嘛呢?


先看下,mongodb里面数据的格式:


image.png

从上边截图可以看到,这里面的Collections(大集合),其实就是类似mysql里面的表的那种东西。然后右边的框,可以看到有个Key的概念,其实就是指这个Collections(大集合)里面,你需要获取的小集合信息,在这个小集合里面,实际上是对应一个实体类的,取值的时候就get方法就可以。


上面是简单的介绍一下,其实我们还是看代码吧:


那么,我们先来建一个实体类吧,


UserEntity:


package com.jc.mongodemo.pojo;
import java.io.Serializable;
/**
 * @Author: JCccc
 * @CreateTime: 2018-09-28
 * @Description:
 */
public class UserEntity implements Serializable {
    private static final long serialVersionUID = -3258839839160856613L;
    private Long id;
    private String userName;
    private String passWord;
    private String type;
    @Override
    public String toString() {
        return "UserEntity{" +
                "id=" + id +
                ", userName='" + userName + '\'' +
                ", passWord='" + passWord + '\'' +
                ", type='" + type + '\'' +
                '}';
    }
    public static long getSerialVersionUID() {
        return serialVersionUID;
    }
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getPassWord() {
        return passWord;
    }
    public void setPassWord(String passWord) {
        this.passWord = passWord;
    }
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
}


好了,这里需要注意的是,上面实体类的字段,是必须一 一 对 应 mongodb里面某个小集合的 字段的!!!!!否则 ,不能成功取数据!(当然我们这教程是从0开始, 所以我们规定好,插入就行了。 后面取当然也就一一对应了。 但是如果你是直接上来就取数据,那么你就得注意对应了!)


然后写个方法类吧,我这里没严格解耦,


UserDaoImpl:


package com.jc.mongodemo.dao;
import com.jc.mongodemo.pojo.UserEntity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Component;
import java.util.List;
/**
 * @Author: JCccc
 * @CreateTime: 2018-09-28
 * @Description:
 */
@Component
public class UserDaoImpl  {
    @Autowired
    private MongoTemplate mongoTemplate;
    /**
     * 创建对象
     * @param user
     */
    public void saveUser(UserEntity user) {
        mongoTemplate.save(user);
    }
    public List<UserEntity> findUserByType(String type) {
        Query query=new Query(Criteria.where("type").is(type));
        List<UserEntity> userlist =  mongoTemplate.findAllAndRemove(query , UserEntity.class);
        return userlist;
    }
    public List<UserEntity> findUserByCollection(String CollectionName,String type) {
        Query query=new Query(Criteria.where("type").is(type));
        List<UserEntity> userlist =  mongoTemplate.findAllAndRemove(query , UserEntity.class,CollectionName);
        return userlist;
    }
    /**
     * 根据用户名查询对象
     * @param userName
     * @return
     */
    public UserEntity findUserByUserName(String userName) {
        Query query=new Query(Criteria.where("userName").is(userName));
        UserEntity user =  mongoTemplate.findOne(query , UserEntity.class);
        return user;
    }
    /**
     * 更新对象
     * @param user
     */
    public void updateUser(UserEntity user) {
        Query query=new Query(Criteria.where("id").is(user.getId()));
        Update update= new Update().set("userName", user.getUserName()).set("passWord", user.getPassWord());
        //更新查询返回结果集的第一条
        mongoTemplate.updateFirst(query,update,UserEntity.class);
        //更新查询返回结果集的所有
        // mongoTemplate.updateMulti(query,update,UserEntity.class);
    }
    /**
     * 删除对象
     * @param id
     */
    public void deleteUserById(Long id) {
        Query query=new Query(Criteria.where("id").is(id));
        mongoTemplate.remove(query,UserEntity.class);
    }
}


从上边可以看到,已经开始使用mongodb了!!!! 都开始往里面CRUD了!  关键点在于啥???


关键点:


@Autowired    private MongoTemplate mongoTemplate;  


这就是告诉项目,我这里要注入mongodb的使用!


好了,然后我们去test里面去调用一下方法结束我们这个简单到极致的教程吧:


@RunWith(SpringRunner.class)
@SpringBootTest
public class MongodemoApplicationTests {
   @Test
   public void contextLoads() {
   }
   @Autowired
   private UserDaoImpl userDao;
   //...............空着先
}


然后开始尝试调用方法:


这是增加一个用户信息。


public void testSaveUser() throws Exception {
   UserEntity user=new UserEntity();
   user.setId(106l);
   user.setUserName("小凯");
   user.setPassWord("fffooo123");
   user.setType("A");
   userDao.saveUser(user);
}


这是查询一个用户信息。


public void findUserByUserName(){
   UserEntity user= userDao.findUserByUserName("小凯");
   System.out.println("user is "+user);
}


这是更新一个用户信息。


public void updateUser(){
   UserEntity user=new UserEntity();
   user.setId(106l);
   user.setUserName("大凯");
   user.setPassWord("11223344");
   userDao.updateUser(user);
}


这是删除一个用户信息。


public void deleteUserById(){
   userDao.deleteUserById(106l);
}


好了,到此结束吧。


ps: 我这个例子,用户id我用的long类型哈,所以每个数字后面的l是让数字变成Long类型的意思。

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
3月前
|
NoSQL Java MongoDB
Springboot WebFlux项目结合mongodb进行crud
这篇文章介绍了如何使用Spring Boot WebFlux框架结合MongoDB进行基本的CRUD(创建、读取、更新、删除)操作,包括项目设置、实体类和Repository的创建、控制器的实现以及配置文件的编写。
69 0
Springboot WebFlux项目结合mongodb进行crud
|
5月前
|
NoSQL Java MongoDB
SpringBoot中MongoDB的那些高级用法
本文探讨了在Spring Boot项目中使用MongoDB的多种方式及其高级用法。MongoDB作为一种NoSQL数据库,在某些场景下相较于SQL数据库有着独特的优势。文中详细介绍了在Spring Boot中使用MongoDB的三种主要方式:直接使用官方SDK、使用Spring JPA以及使用MongoTemplate,并对比分析了它们之间的差异。此外,文章深入讲解了Spring Data MongoDB提供的各种注解(如@Id, @Document, @Field等)以简化操作流程,并探讨了MongoTemplate监听器的应用,如设置主键值、记录日志等。
233 2
|
2月前
|
消息中间件 NoSQL Java
springboot整合常用中间件框架案例
该项目是Spring Boot集成整合案例,涵盖多种中间件的使用示例,每个案例项目使用最小依赖,便于直接应用到自己的项目中。包括MyBatis、Redis、MongoDB、MQ、ES等的整合示例。
122 1
|
3月前
|
前端开发 Java Apache
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
本文详细讲解了如何整合Apache Shiro与Spring Boot项目,包括数据库准备、项目配置、实体类、Mapper、Service、Controller的创建和配置,以及Shiro的配置和使用。
703 1
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
|
3月前
|
SQL NoSQL Java
springboot操作nosql的mongodb,或者是如何在mongodb官网创建服务器并进行操作
本文介绍了如何在Spring Boot中操作NoSQL数据库MongoDB,包括在MongoDB官网创建服务器、配置Spring Boot项目、创建实体类、仓库类、服务类和控制器类,以及如何进行测试。
31 1
springboot操作nosql的mongodb,或者是如何在mongodb官网创建服务器并进行操作
|
3月前
|
Web App开发 JavaScript Java
elasticsearch学习五:springboot整合 rest 操作elasticsearch的 实际案例操作,编写搜索的前后端,爬取京东数据到elasticsearch中。
这篇文章是关于如何使用Spring Boot整合Elasticsearch,并通过REST客户端操作Elasticsearch,实现一个简单的搜索前后端,以及如何爬取京东数据到Elasticsearch的案例教程。
263 0
elasticsearch学习五:springboot整合 rest 操作elasticsearch的 实际案例操作,编写搜索的前后端,爬取京东数据到elasticsearch中。
|
4月前
|
NoSQL MongoDB 数据库
python3操作MongoDB的crud以及聚合案例,代码可直接运行(python经典编程案例)
这篇文章提供了使用Python操作MongoDB数据库进行CRUD(创建、读取、更新、删除)操作的详细代码示例,以及如何执行聚合查询的案例。
43 6
|
4月前
|
消息中间件 Java Kafka
springboot项目启动报错-案例情景介绍
springboot项目启动报错-案例情景介绍
103 2
|
5月前
|
NoSQL Java MongoDB
SpringBoot中MongoDB的那些骚操作用法
MongoDB作为一种NoSQL数据库,在不需要传统SQL数据库的表格结构的情况下,提供了灵活的数据存储方案。在Spring Boot中可以通过官方SDK、Spring JPA或MongoTemplate等方式集成MongoDB。文章重点介绍了Spring Data MongoDB提供的注解功能,例如`@Id`、`@Document`和`@Field`等,这些注解简化了Java对象到MongoDB文档的映射。此外,文中还讨论了MongoTemplate监听器的使用,包括设置主键值和日志记录等高级特性。
274 0
SpringBoot中MongoDB的那些骚操作用法
|
5月前
|
NoSQL Java MongoDB
MongoDB 读写分离——SpringBoot读写分离
MongoDB 读写分离——SpringBoot读写分离
146 0