SpringBoot 통합 의 SpringBoot 통합 MongoDB 의 상세 한 절차
11902 단어 SpringBoot통합MongoDB
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 에 관 한 더 많은 내용 은 이전 글 을 검색 하거나 다음 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Java・SpringBoot・Thymeleaf】 에러 메세지를 구현(SpringBoot 어플리케이션 실천편 3)로그인하여 사용자 목록을 표시하는 응용 프로그램을 만들고, Spring에서의 개발에 대해 공부하겠습니다 🌟 마지막 데이터 바인딩에 계속 바인딩 실패 시 오류 메시지를 구현합니다. 마지막 기사🌟 src/main/res...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.