当前位置: 首页 > news >正文

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

创建一个springboot项目

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

<?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里面数据的格式:

从上边截图可以看到,这里面的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类型的意思。

 

相关文章:

  • IDEA 设置 快速生成serialVersionUID
  • springboot 最简单的日志打印,输出日志文件 及全局异常捕获处理
  • SpringBoot 最简单的使用异步线程案例 @Async
  • Springboot中 使用request的几种方法。
  • 使用WebStorm 报错解决方法!!Unable to save settings: Failed to save settings (内含注册码破解码)
  • Angular7 关于Bootstrap4.x.x版本无法使用Glyphicons 字体图标 简单解决方案
  • springboot 获取访问接口的请求的IP地址
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • 什么是Kafka
  • Springboot 线程同步之Semaphore 的简单使用
  • JAVA Gson的使用
  • JAVA 最全最细的fastjson使用介绍,带你透彻领悟JSON
  • fastJson注解@JSONField 的作用及其效果
  • HttpClient 不同版本的超时时间设置
  • 使用两个栈实现队列,简单例子
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • Angular 响应式表单之下拉框
  • create-react-app做的留言板
  • eclipse的离线汉化
  • PermissionScope Swift4 兼容问题
  • PHP变量
  • unity如何实现一个固定宽度的orthagraphic相机
  • ViewService——一种保证客户端与服务端同步的方法
  • Vim 折腾记
  • 对超线程几个不同角度的解释
  • 解析 Webpack中import、require、按需加载的执行过程
  • 数据可视化之 Sankey 桑基图的实现
  • 回归生活:清理微信公众号
  • ​ubuntu下安装kvm虚拟机
  • #14vue3生成表单并跳转到外部地址的方式
  • $.ajax()方法详解
  • (C语言)球球大作战
  • (黑客游戏)HackTheGame1.21 过关攻略
  • (深入.Net平台的软件系统分层开发).第一章.上机练习.20170424
  • (四)库存超卖案例实战——优化redis分布式锁
  • (四)模仿学习-完成后台管理页面查询
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • .NET : 在VS2008中计算代码度量值
  • .NET 编写一个可以异步等待循环中任何一个部分的 Awaiter
  • .Net+SQL Server企业应用性能优化笔记4——精确查找瓶颈
  • .Net的DataSet直接与SQL2005交互
  • .Net多线程总结
  • .net访问oracle数据库性能问题
  • .Net环境下的缓存技术介绍
  • .NET业务框架的构建
  • .NET中两种OCR方式对比
  • @Autowired @Resource @Qualifier的区别
  • @autowired注解作用_Spring Boot进阶教程——注解大全(建议收藏!)
  • @Service注解让spring找到你的Service bean
  • [AutoSar]BSW_Com02 PDU详解
  • [C++]二叉搜索树
  • [cocos creator]EditBox,editing-return事件,清空输入框
  • [dfs搜索寻找矩阵中最长递减序列]魔法森林的秘密路径
  • [JS]JavaScript 注释 输入输出语句