sm 기술 블로그

[스프링부트] JPA 메소드 모음 본문

스프링부트

[스프링부트] JPA 메소드 모음

sm_hope 2022. 7. 6. 11:46

1) findAll()

DB에서 전체 값을 list로 불러올때 사용한다.

2) findOne()

primary key로 값을 1건 조회할 때 사용한다.

3) findByXX => SQL Where절이라고 생각하자.

findBy뒤에 우리가 정의한 Entity의 이름을 붙이면된다.

Entity의 이름의 첫글자는 대문자로 하며, id를 조건으로 검색한다면 findById(int id) 로 검색하면 된다.

여기서 여러개의 조건을 걸고싶다면...?

And조건

findByIdAndName(int id, String name)으로 And를 사용하여 검색한다.

OR 조건

findByIdOrName(int id, String name)으로 Or을 사용하여 검색한다.

4) Like / NotLike

like를 붙이면 인수에 지정된 텍스트를 포함하는 Entity를 검색한다.

=> SQL Like문

NotLike는 반대로 지정된 텍스트를 포함하지 않는 엔티티를 검색한다.

findByNameLike 라고 사용하게 된다면, name에서 인수의 텍스트를 검색한다.

5) StartingWith / EndingWith

값에서 지정된 텍스트로 시작하거나, 끝나는 값을 검색한다.

findByNameStartingWith("Bab") 이라면 이름이 Bab으로 시작하는 이름을 검색한다.

반대로 findByNameEndingWith("Bab")이라면 이름이 Bab으로 끝나는 이름을 검색한다.

6) IsNull / IsNotNull

값이 null이거나 null이 아닌 아이들을 검색한다.

예를들어 Name중에 null인 것들을 검색하려면...? => findByNameIsNull() 이렇게 사용하면 된다.

7) True / False

Boolean값으로 true/false인것을 검색한다.

예를들어 useYn이 true인 아이들을 검색하려면...? => findByUseYnTrue()로 검색하면 된다. 반대는 False()

8) Before / After

시간 기준으로 값을 검색한다.

예를 들어 createdDate가 현재보다 이전것을 검색하고 싶다면...? => findByCreatedDateBefore(new Date())로 검색할 수 있다.

9) LessThan / GreaterThan

숫자(값)를 기준으로 더 작은,큰 값을 검색한다.

에를들어 cnt가 20보다 작은것들을 검색하고 싶다면...? => findByCntLessThan(20)으로 검색할 수 있다.

10) Between

두숫자(값)의 사이에 있는 값을 기준으로 검색한다.

예를들어 cnt가 0부터 20까지 사이에 있는 값만 검색하고 싶다면...? => findByCntBetween(0,20)으로 검색할 수 있다.

시간도 사용가능하다

11) OrderBy

우리는 orderby를 자주 사용한다. jpa에서는 어떻게 사용해야 할까?

간단하다 메서드 명에 OrderBy검색할Entity명Asc/Desc(조건)을 사용하면 된다.

예를들어 cnt를 순서대로, 주소를 기준으로 뽑아오고 싶다면 findByAddressOrderByCnt(String address) 로 검색할 수있다.

12) countBy

SQL에서 count를 사용하는것과 같다.

결과의 count를 Return하는 메서드.

저장 메서드

1) save()

    @RequestMapping("/doModify")
    @ResponseBody
    public String articleModify(@RequestParam Long id, String title, String body) {
        Article article = articleRepository.findById(id).get();

        if(article.getTitle() == null){
            return "제목 없다.";
        }

        if(article.getBody() == null){
            return "내용 없다.";
        }

        article.setTitle(title);
        article.setBody(body);
        articleRepository.save(article);

        return "수정 됐다.";

    }

레코드들을 저장할 때 사용한다.

insert() 와 update() 기능을 한다.

삭제 메서드

1) delete()

    @RequestMapping("/doDelete")
    @ResponseBody
    public String articleModify(@RequestParam Long id) {
        Article article = articleRepository.findById(id).get();
        
        articleRepository.delete(article);

        return "없어짐.";
    }

레코드들을 삭제할 때 사용한다.

optional은 null이 있는지 확인하는 것임.

Comments