天天看點

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裡面資料的格式:

Springboot最簡單的整合使用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);
}      

繼續閱讀