SpringBoot 통합 의 SpringBoot 통합 MongoDB 의 상세 한 절차

MongoDB 는 분산 파일 을 기반 으로 저 장 된 데이터베이스 다.C++언어 로 작 성 됩 니 다.WEB 응용 프로그램 에 확장 가능 한 고성능 데이터 저장 솔 루 션 을 제공 하기 위 한 것 입 니 다.
MongoDB 는 관계 데이터베이스 와 비관 계 데이터베이스 사이 에 있 는 제품 으로 비관 계 데이터베이스 중에서 기능 이 가장 풍부 하고 관계 데이터베이스 와 가장 비슷 하 다.본 고 는 SpringBoot 통합 의 SpringBoot 통합 MongoDB 의 절 차 를 소개 한다.
1.프로젝트 생 성,의존 선택
Spring Web,Spring Data MongoDB 만 선택 하면 됩 니 다.



2.관련 의존 도입(불필요)
여 기 는 실체 류 의 생 성 편 의 를 위해 lombok 을 도입 한 것 입 니 다.

<!--   lombok -->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>
3.MongoDB 를 처음 사용 하 는 경우 먼저 사용 자 를 만 듭 니 다.

> use admin
switched to db admin
> db.createUser({user:"zlfeng", pwd:"123456", roles:[{role:"readWriteAnyDatabase", db:"admin"}]});
Successfully added user: {
	"user" : "zlfeng",
	"roles" : [
		{
			"role" : "readWriteAnyDatabase",
			"db" : "admin"
		}
	]
}
MongoDB 권한 소개
권한
설명 하 다.
read
사용자 가 지정 한 데이터 베 이 스 를 읽 을 수 있 도록 합 니 다.
readWrite
사용자 가 지정 한 데이터 베 이 스 를 읽 고 쓸 수 있 도록 합 니 다.
dbAdmin
사용자 가 지정 한 데이터베이스 에서 관리 함 수 를 실행 할 수 있 도록 합 니 다.예 를 들 어 색인 생 성,삭제,통계 보기 또는 system.profile 에 접근 할 수 있 습 니 다.
userAdmin
사용자 가 system.users 에 집합 하여 기록 할 수 있 도록 합 니 다.지정 한 데이터베이스 에서 사용 자 를 만 들 고 삭제 하 며 관리 할 수 있 습 니 다.
clusterAdmin
admin 데이터베이스 에서 사용자 에 게 모든 블록 버스터 와 복사 집합 관련 함수 에 대한 관리 권한 을 부여 해 야 합 니 다.
readAnyDatabase
admin 데이터베이스 에서 사용자 에 게 모든 데이터 베 이 스 를 읽 을 수 있 는 권한 을 부여 해 야 합 니 다.
readWriteAnyDatabase
admin 데이터베이스 에서 사용자 에 게 모든 데이터베이스 에 읽 기와 쓰기 권한 을 부여 해 야 합 니 다.
userAdminAnyDatabase
admin 데이터베이스 에서 사용자 에 게 모든 데이터베이스 의 userAdmin 권한 을 부여 해 야 합 니 다.
dbAdminAnyDatabase
admin 데이터베이스 에서 사용자 에 게 모든 데이터베이스 의 dbAdmin 권한 을 부여 해 야 합 니 다.
root
admin 데이터베이스 에서 슈퍼 계 정,슈퍼 권한 을 정의 해 야 합 니 다.
4.핵심 프로필 정의

#           
spring.data.mongodb.authentication-database=admin

#     ip  
spring.data.mongodb.host=192.168.133.142

# MongoDB   
spring.data.mongodb.port=27017

#     
spring.data.mongodb.username=zlfeng

#     
spring.data.mongodb.password=123456

#         
#       ,            
spring.data.mongodb.database=db_student
5.실체 클래스 만 들 기

package cn.byuan.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.springframework.data.annotation.Id;

import java.io.Serializable;
import java.util.Date;

@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@Data
public class Student implements Serializable {
    @Id//     id 
    private String studentId;

    private String studentName;

    private Integer studentAge;

    private Double studentScore;
    
    private Date studentBirthday;
}
6.dao 층 을 만 듭 니 다.여기 dao 층 은 두 가지 쓰기 가 있 습 니 다.
(1)dao 레이 어 쓰기 1
1.인 코딩 부분

package cn.byuan.dao;

import cn.byuan.entity.Student;
import org.springframework.data.mongodb.repository.MongoRepository;

/*
* dao    
*         SpringDataJPA  ,            
*
*            
*
* MongoRepository<        ,      >
* */
public interface StudentDaoTypeOne extends MongoRepository<Student, String> {
    
//               ,          
    Student getAllByStudentName(String studentName);
        
}

2.테스트 부분
테스트 를 진행 하기 전에,우 리 는 먼저 데이터 베 이 스 를 조회 합 니 다.이때 db 가 존재 하지 않 습 니 다.학생 의 라 이브 러 리

테스트 시작

package cn.byuan;

import cn.byuan.dao.StudentDaoTypeOne;
import cn.byuan.entity.Student;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.Date;
import java.util.List;

@SpringBootTest
class StudentDaoTypeOneTests {

    @Autowired
    private StudentDaoTypeOne studentDaoTypeOne;

    @Test
    void addOneStudent(){
//          10 
        for (Integer count = 0; count < 10; count++) {
            Student student = new Student()
                    .setStudentId("student_"+count) //        id         id
                    .setStudentName("Godfery"+count)
                    .setStudentAge(count)
                    .setStudentScore(98.5-count)
                    .setStudentBirthday(new Date());
            studentDaoTypeOne.save(student);
        }
    }

    @Test
    void deleteOneStudentByStudentId(){
//          id student_0   
        studentDaoTypeOne.deleteById("student_0");
    }

    @Test
    void updateOneStudent(){
//             Godfery1 Student   22
        Student student = studentDaoTypeOne.getAllByStudentName("Godfery1");
        student.setStudentAge(22);
        studentDaoTypeOne.save(student);

    }

    @Test
    void getOneStudentByStudentId(){
        System.out.println(studentDaoTypeOne.findById("student_1"));
    }

    @Test
    void getAllStudent(){
        List<Student> studentList = studentDaoTypeOne.findAll();
        studentList.forEach(System.out::println);
    }

}

일단 데이터 베 이 스 를 살 펴 보 겠 습 니 다.

데이터베이스 에 들 어가 서 데 이 터 를 확인 해 보 세 요.

(2)dao 층 표기 법 2
1.인 코딩 부분
인터페이스 부분

package cn.byuan.dao;

import cn.byuan.entity.Student;

import java.util.List;

/*
* dao    
*
*          
* */
public interface StudentDaoTypeTwo {
//          
    void addOneStudent(Student student);

//      id      
    void deleteOneStudentByStudentId(String studentId);

//             
    void updateOneStudent(Student student);

//        id      
    Student getOneStudentByStudentId(String studentId);

//          
    List<Student> getAllStudent();
}
실현 류

package cn.byuan.dao.imp;

import cn.byuan.dao.StudentDaoTypeTwo;
import cn.byuan.entity.Student;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public class StudentDaoTypeTwoImp implements StudentDaoTypeTwo {

//      MongoTemplate          
    @Autowired
    private MongoTemplate mongoTemplate;

//          
    public void addOneStudent(Student student){
        mongoTemplate.save(student);

    }

//      id      
    public void deleteOneStudentByStudentId(String studentId){
        Student student = mongoTemplate.findById(studentId, Student.class);
        if(student != null){
            mongoTemplate.remove(student);
        }

    }

//             
    public void updateOneStudent(Student student){
        mongoTemplate.save(student);
    }

//        id      
    public Student getOneStudentByStudentId(String studentId){
        return mongoTemplate.findById(studentId, Student.class);
    }

//          
    public List<Student> getAllStudent(){
        return mongoTemplate.findAll(Student.class);
    }
}
2.테스트 부분

package cn.byuan;

import cn.byuan.dao.StudentDaoTypeOne;
import cn.byuan.dao.StudentDaoTypeTwo;
import cn.byuan.entity.Student;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.Date;
import java.util.List;

@SpringBootTest
class StudentDaoTypeTwoTests {

    @Autowired
    private StudentDaoTypeTwo studentDaoTypeTwo;

    @Test
    void addOneStudent(){
//          10 
        for (Integer count = 0; count < 10; count++) {
            Student student = new Student()
                    .setStudentId("study_"+count) //        id         id
                    .setStudentName("Echo"+count)
                    .setStudentAge(count)
                    .setStudentScore(98.5-count)
                    .setStudentBirthday(new Date());
            studentDaoTypeTwo.addOneStudent(student);
        }
    }

    @Test
    void deleteOneStudentByStudentId(){
//          id study_0   
        studentDaoTypeTwo.deleteOneStudentByStudentId("study_0");
    }

    @Test
    void updateOneStudent(){
//          id study_1 Student   21
        Student student = studentDaoTypeTwo.getOneStudentByStudentId("study_1");
        student.setStudentAge(21);
        studentDaoTypeTwo.updateOneStudent(student);

    }

    @Test
    void getOneStudentByStudentId(){
        System.out.println(studentDaoTypeTwo.getOneStudentByStudentId("study_1"));
    }

    @Test
    void getAllStudent(){
        List<Student> studentList = studentDaoTypeTwo.getAllStudent();
        studentList.forEach(System.out::println);
    }

}

데이터베이스 에 들 어가 서 데 이 터 를 확인 해 보 세 요.

원본 주소:https://github.com/byuan98/springboot-integration/tree/master/test008_springboot_mongodb
SpringBoot 통합 의 SpringBoot 통합 MongoDB 에 관 한 상세 한 절 차 를 소개 합 니 다.SpringBoot 통합 MongoDB 에 관 한 더 많은 내용 은 이전 글 을 검색 하거나 다음 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!
SpringBoot 통합 의 SpringBoot 통합 MongoDB 에 관 한 상세 한 절 차 를 소개 합 니 다.SpringBoot 통합 MongoDB 에 관 한 더 많은 내용 은 이전 글 을 검색 하거나 다음 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!

좋은 웹페이지 즐겨찾기