AI교육과정 - Spring.4

단비·2022년 12월 8일
0

AI교육과정

목록 보기
43/69
  • Intellij mysql 사용법
    • 프로젝트 생성 시 lombok, jpa, mysql, spring web 추가

    • 우측 database 탭 - + 버튼 클릭 - mysql 선택 - localhost: root / password: 1234

      spring:
        datasource:
          driver-class-name: com.mysql.cj.jdbc.Driver
          url: jdbc:mysql://127.0.0.1:3306/aidev?serverTimezone=Asia/Seoul
          username: root
          password: 1234
        jpa:
          show-sql: true
          properties:
            hibernate:
              format_sql: true
      
      server:
        port: 8888

  • 모든 데이터 출력
    for(AdminUser adminUser : adminUserRepository.findAll()){
        System.out.print(adminUser);
    }
    ==
    adminUserRepository.findAll().forEach(System.out::println)

😊 List 바로 생성

Lists.newArrayList(adminUser1,adminUser2)
//adminUserRepository의 엘리먼트들을 모두 찾아 id 2, 3, 7번을 리스트에 저장
adminUserRepository.findAllById(Lists.newArrayList(2L, 3L, 7L))
  • 데이터 정렬
    • id를 기준으로 내림차순 정렬

      List<AdminUser> adminUsers = adminUserRepository.findAll(Sort.by(Sort.Direction.DESC,"id"));
  • 데이터 검색
    • id 2,3,7번을 adminUsers 리스트에 저장

      List<AdminUser> adminUsers = adminUserRepository.findAllById(Lists.newArrayList(2L, 3L, 7L));
  • 여러 데이터 저장
    • 데이터를 모두 세팅 후 saveAll에서 리스트 생성

      AdminUser adminUser1 = AdminUser.builder().userid("avocado")
              .userpw("7777").name("안가도").build();
      AdminUser adminUser2 = AdminUser.builder().userid("mango")
              .userpw("7788").name("김맹고").build();
      adminUserRepository.saveAll(Lists.newArrayList(adminUser1,adminUser2));
      
      List<AdminUser> adminUsers = adminUserRepository.findAll();
  • 데이터 불러오기
    1. getOne으로 불러오기

      AdminUser adminUser = adminUserRepository.getOne(2L)
    2. Optional으로 불러오기

      Optional<AdminUser> adminUser = adminUserRepository.findById(2L);
      AdminUser adminUser = adminUserRepository.findById(2L).orElse(null);
      AdminUser adminUser = adminUserRepository.findById(2L).orElseThrow()
    3. Optional 없이 findById로 불러오기

      • orElse(null)의 경우 id의 경우 원래 null값이 허용되지 않으므로 맞지 않는 코드임.
      • orElseThrow를 지향해야함
      AdminUser adminUser = adminUserRepository.findById(2L).orElse(null)
      AdminUser adminUser = adminUserRepository.findById(2L).orElseThrow()
  • 데이터 개수 불러오기
    long count = adminUserRepository.count()
  • 아이디 존재 유무 확인
    • boolean 값으로 확인

      boolean exists = adminUserRepository.existsById(2L)
  • 데이터 삭제
    • 데이터 삭제 시 select가 일어남

      adminUserRepository.deleteById(2L);
      ==
      adminUserRepository.delete(adminUserRepository.findById(2L).orElseThrow(RuntimeException::new))
  • 여러 데이터 삭제
    • deleteAll()
      • 해당 id를 하나하나 있는지 검사하면서 지움.

      • deleteAll()은 성능이슈로 인해 거의 사용하지 않는다

        adminUserRepository.deleteAll(adminUserRepository.findAllById(Lists.newArrayList(1L,3L)))
    • deleteInBatch()
      • select하는 과정은 없이 delete만 함

      • 대용량 파일에 좋음

        adminUserRepository.deleteInBatch(adminUserRepository.findAllById(Lists.newArrayList(5L, 9L))
  • 페이지 생성
    • getTotalElements(): 총 개수

    • getTotalPages(): 총 페이지

    • getNumberOfElements(): 페이지에 출력되는 개수 (3을 설정했어도 2개만 출력되면 2로 나옴)

    • getSize(): 설정된 사이즈

    • getSort()):정렬 여부

      // import org.springframework.data.domain.Page; 확인 필요!
      Page<AdminUser> adminUsers = adminUserRepository.findAll(PageRequest.of(1, 3));
      System.out.println("🐸 page: " + adminUsers);
      System.out.println("🐸 totalElements:" + adminUsers.getTotalElements()); //총 개수
      System.out.println("🐸 totalPages: " + adminUsers.getTotalPages()); //총 페이지
      System.out.println("🐸 numberOfElements: " + adminUsers.getNumberOfElements()); //페이지에 출력되는 개수 (3을 설정했어도 2개만 출력되면 2로 나옴)
      System.out.println("🐸 size: " + adminUsers.getSize()); //설정된 사이즈
      System.out.println("🐸 sort: " + adminUsers.getSort()); //정렬 여부

  • Enum 클래스
    • 열거체를 비교할 때 실제 값과 타입까지 체크할 수 있는 클래스
      enum 열거체이름 {1,2,3, ...}
      열거체이름 변수명;
    1. enum class 생성법

      @AllArgsConstructor
      @Getter
      public enum UserStatus {
          REGISTERED(0, "가입", "사용자 가입상태"),
          UNREGISTERED(1, "탈퇴", "사용자 탈퇴상태");
      
          private Integer id;
          private String title;
          private String description;
      }
    2. lombok enum 설정법

      @Enumerated(EnumType.STRING)
      private UserStatus status;
    3. enum 설정된 변수 설정법

      .status(UserStatus.*REGISTERED*)
profile
tistory로 이전! https://sweet-rain-kim.tistory.com/

0개의 댓글