프로젝트 생성 시 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();
getOne으로 불러오기
AdminUser adminUser = adminUserRepository.getOne(2L)
Optional으로 불러오기
Optional<AdminUser> adminUser = adminUserRepository.findById(2L);
AdminUser adminUser = adminUserRepository.findById(2L).orElse(null);
AdminUser adminUser = adminUserRepository.findById(2L).orElseThrow()
Optional 없이 findById로 불러오기
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))
해당 id를 하나하나 있는지 검사하면서 지움.
deleteAll()은 성능이슈로 인해 거의 사용하지 않는다
adminUserRepository.deleteAll(adminUserRepository.findAllById(Lists.newArrayList(1L,3L)))
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 열거체이름 {값1, 값2, 값3, ...}
열거체이름 변수명;
enum class 생성법
@AllArgsConstructor
@Getter
public enum UserStatus {
REGISTERED(0, "가입", "사용자 가입상태"),
UNREGISTERED(1, "탈퇴", "사용자 탈퇴상태");
private Integer id;
private String title;
private String description;
}
lombok enum 설정법
@Enumerated(EnumType.STRING)
private UserStatus status;
enum 설정된 변수 설정법
.status(UserStatus.*REGISTERED*)