SpringBoot整合MongoDB
阿新 • • 發佈:2018-12-14
一、mongodb簡介
MongoDB是一個基於分散式檔案儲存的資料庫。由C++語言編寫。旨在為WEB應用提供可擴充套件的高效能資料儲存解決方案。
MongoDB是一個介於關係資料庫和非關係資料庫之間的產品,是非關係資料庫當中功能最豐富,最像關係資料庫的。它支援的資料結構非常鬆散,是類似json的bson格式,因此可以儲存比較複雜的資料型別。Mongo最大的特點是它支援的查詢語言非常強大,其語法有點類似於面向物件的查詢語言,幾乎可以實現類似關係資料庫單表查詢的絕大部分功能,而且還支援對資料建立索引。
特點:
它的特點是高效能、易部署、易使用,儲存資料非常方便。主要功能特性有:
- 面向集合儲存,易儲存物件型別的資料;
- 模式自由;
- 支援動態查詢;
- 支援完全索引,包含內部物件;
- 支援查詢;
- 支援複製和故障恢復;
- 使用高效的二進位制資料儲存,包括大型物件(如視訊等);
- 自動處理碎片,以支援雲端計算層次的擴充套件性;
- 支援RUBY,PYTHON,JAVA,C++,PHP,C#等多種語言;
- 檔案儲存格式為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());
}
}