TIL

[TIL] 200730 spring boot에서 mongodb 사용하기

잇나우 2020. 7. 31. 02:20
반응형

MongoDB에 대한 지식이 없어서 spring boot에서는 어떻게 mongodb에 데이터를 insert 시키는지에 대해 공부했다.

MongoDatabaseFactory 를 사용하여 추가하는 방법

@Autowired
MongoDatabaseFactory mongoDatabaseFactory;

...

@Bean
public ApplicationRunner applicationRunner(){
    return args -> {
        MongoDatabase db = mongoDatabaseFactory.getMongoDatabase();
        db.createCollection("collectionName");

        db.getCollection("collectionName").insertOne(
            new Document()
                .appned("fieldName1", "Hello")
                .append("fieldName2", "World")
        )
    }
}

3.0버전 부터는 MongoDbFactory 대신 MongoDatabaseFactory를 사용하면 된다.

MongoTemplate을 이용하는 방법

@Getter
@Setter
public class CollectionDto {
    private String name;
    private String number;
}

template은 insert메소드에 object를 받을 수 있기때문에 dtoClass를 만들었다.

@Autowired
MongoTemplate mongoTemplate;

...

@Bean
public ApplicationRunner applicationRunner() {
    return args -> {
        CollectionDto dto = new CollectionDto();
        dto.setName("이름");
        dto.setNumber("숫자");
        mongoTemplate.insert(dto, "collectionName"); // object, [컬렉션이름]
    }
}

mongoRepository를 이용하는 방법

@Getter
@Setter
@Document(collection = "collectionName")
public class CollectionDto {
    private String name;
    private String number;
}

dtoClass에 @Document를 넣어준다. class에 이름과 컬렉션의 이름이 다를경우 따로 collection을 설정해준다.

public interface CollectionRepository extends PagingAndSortingRepository<Meeting, String> {  
    List<Meeting> findByName(String name);  
}

Repository를 인터페이스를 만든후

@Autowired  
MeetingRepository meetingRepository;

...

@Bean
public ApplicationRunner applicationRunner() {
    return args -> {
        meetingRepository.findByName("이름").forEach(m -> {  
            System.out.println(m);  
        });
    }
}

name field의 값이 이름인 데이터를 콘솔에 출력

반응형

'TIL' 카테고리의 다른 글

[TIL] 200828 간단한 IntelliJ 단축키 팁  (0) 2020.08.28
[TIL] 200824 JAVA. HashMap의 getOrDefault()  (0) 2020.08.24
200123 jQuery 기본문법, 함수  (0) 2020.01.24
200122 HTML5, CSS3 추가된 것들  (0) 2020.01.22
200121 Date(), RegExp, Ajax  (0) 2020.01.21