1. 程式人生 > >SpringBoot整合MongoDB

SpringBoot整合MongoDB

一、mongodb簡介

          MongoDB是一個基於分散式檔案儲存的資料庫。由C++語言編寫。旨在為WEB應用提供可擴充套件的高效能資料儲存解決方案。

          MongoDB是一個介於關係資料庫和非關係資料庫之間的產品,是非關係資料庫當中功能最豐富,最像關係資料庫的。它支援的資料結構非常鬆散,是類似jsonbson格式,因此可以儲存比較複雜的資料型別。Mongo最大的特點是它支援的查詢語言非常強大,其語法有點類似於面向物件的查詢語言,幾乎可以實現類似關係資料庫單表查詢的絕大部分功能,而且還支援對資料建立索引

特點:

它的特點是高效能、易部署、易使用,儲存資料非常方便。主要功能特性有:

  • 面向集合儲存,易儲存物件型別的資料;
  • 模式自由;
  • 支援動態查詢
  • 支援完全索引,包含內部物件;
  • 支援查詢;
  • 支援複製和故障恢復;
  • 使用高效的二進位制資料儲存,包括大型物件(如視訊等);
  • 自動處理碎片,以支援雲端計算層次的擴充套件性;
  • 支援RUBYPYTHONJAVAC++PHPC#等多種語言;
  • 檔案儲存格式為BSON(一種JSON的擴充套件);
  • 可通過網路訪問。

二、SpringBoot+MongoMD

1、MongoMD安裝

2、建立springboot工程

實體User.java 類:

package com.example.demo.mongodb.entity;

import lombok.Data;
import org.springframework.data.annotation.Id;

import java.io.Serializable;

/**
 * 路徑:com.example.demo.mongodb.service.impl
 * 類名:
 * 功能:《用一句描述一下》
 * 備註:
 * 建立人:typ
 * 建立時間:2018/9/30 17:19
 * 修改人:
 * 修改備註:
 * 修改時間:
 */
@Data
public class User implements Serializable{

    // @id這個註解來對應mongo的_id這個欄位
    @Id
    private String id;
    private String name;
    private int age;

}

service介面UserService.java類:

package com.example.demo.mongodb.service;

import com.example.demo.mongodb.entity.User;
import org.springframework.data.mongodb.repository.MongoRepository;

import java.util.List;

/**
 * 路徑:com.example.demo.mongodb.service
 * 類名:
 * 功能:《用一句描述一下》
 * 備註:
 * 建立人:typ
 * 建立時間:2018/9/30 17:16
 * 修改人:
 * 修改備註:
 * 修改時間:
 */
public interface UserService extends MongoRepository<User, String> {

    User findByName(String name);

}

UserController.java 類:

package com.example.demo.mongodb.controller;

import com.example.demo.mongodb.entity.User;
import com.example.demo.mongodb.service.UserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;
import java.util.Optional;

/**
 * 路徑:com.example.demo.mongodb.controller
 * 類名:
 * 功能:《用一句描述一下》
 * 備註:
 * 建立人:typ
 * 建立時間:2018/9/30 17:19
 * 修改人:
 * 修改備註:
 * 修改時間:
 */
@Slf4j
@RestController
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping("/find")
    public List<User> find(){
        List<User> list = userService.findAll();
        return list;
    }

    @GetMapping("/getById")
    public Optional<User> getById(String id){

        return userService.findById(id);
    }

    @GetMapping("/getByName")
    public User getByName(String name){
        User user = userService.findByName(name);
        return user;
    }

    @PostMapping("/save")
    public String save(@RequestBody User user){
        try{
            userService.save(user);
            return "成功!";
        }catch (Exception e){
            return "失敗!";
        }
    }

    @GetMapping("/del")
    public String del(String id){
        try{
            userService.deleteById(id);
            return "成功!";
        }catch (Exception e){
            return "失敗!";
        }
    }

}

application.yml配置檔案

server:
  port: 8081

spring:
  data:
    mongodb:
      uri: mongodb://admin:[email protected]:27017/text

啟動類:

package com.example.demo.mongodb;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class MongodbDemoApplication {

	public static void main(String[] args) {
		SpringApplication.run(MongodbDemoApplication.class, args);
	}
}

測試類:

package com.example.demo.mongodb;

import com.example.demo.mongodb.controller.UserController;
import com.example.demo.mongodb.entity.User;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import java.util.Optional;

@Slf4j
@RunWith(SpringRunner.class)
@SpringBootTest
public class MongodbDemoApplicationTests {

	@Autowired
	private UserController userController;

	@Test
	public void save() {
		User user = new User();
		user.setName("AAA");
		user.setAge(21);
		userController.save(user);
	}

	@Test
	public void getByName() {
		User user = userController.getByName("AAA");
		log.info(user.toString());
	}

	@Test
	public void getById() {
		Optional<User> user = userController.getById("5bbad429e54ff22fecae8fc7");
		log.info("==========="+user.get().getName());
	}

}