Stream 코드 private static void getPairs() { List numbersA = Arrays.asList(1, 2, 3); List numbersB = Arrays.asList(4, 5); List pairs = numbersA.stream() .flatMap(i -> numbersB.stream() .map(j -> new int[]{i, j})) .collect(toList()); for (int[] a : pairs) { System.out.println(Arrays.toString(a)); } } 결과 [1, 4] [1, 5] [2, 4] [2, 5] [3, 4] [3, 5]
특정 database 지정하여 모든 테이블 데이터 삭제 SET @tables = NULL; SELECT GROUP_CONCAT(table_schema, '.' ,table_name) INTO @tables FROM information_schema.tables WHERE table_schema = 'DB명'; SET @tables = CONCAT('DROP TABLE ', @tables); PREPARE stmt FROM @tables; EXECUTE stmt; DEALLOCATE PREPARE stmt;
TreeMap TreeMap이란, 이진트리를 기반으로 한 Map 컬렉션이다. TreeMap 은 아래와 같이 Key 와 값이 저장된 Map, Entry를 저장한다. 이진 검색트리의 형태로 key-value 쌍으로 이루어진 데이터(Entry)를 저장하는데에 유용하다. HashMap 과 비교하자면, TreeMap 은 범위 검색 또는 정렬 사용에 더 유연하다. TreeMap 에 실행되는 자동 정렬은, 기본적으로 부모 키 값과 비교하여 키 값이 낮은 것은 왼쪽에, 키 값이 높은 것은 오른쪽에 Map.entry 를 저장한다. public static TreeMap map = new TreeMap(); static { map.put(1, "ABC"); map.put(2, "DEF"); } ... treeMap의 특정..
페이징 처리 /* paging */ Page findByName(String name, Pageable pageable); 호출 System.out.println("findByName : " + userRepository.findByName("test1" , PageRequest.of(0, 1, Sort.by(Sort.Order.desc("id"))))); // getContent System.out.println("findByName : " + userRepository.findByName("test1" , PageRequest.of(0, 1, Sort.by(Sort.Order.desc("id")))).getContent()); findAll() 메서드 호출 Page users = userReposit..
Order BY ID DESC List findTopByNameOrderByIdDesc(String name); Order BY ID DESC (Limit 3) List findTop3ByNameOrderByIdDesc(String name); // 역순 TopN 중 N을 생략하면 1이 default 값이다 List findTopByNameOrderByIdDesc(String name); Order BY ID ASC (Limit 1) List findTop1ByNameOrderByIdAsc(String name); // 정순 여러 컬럼의 정렬 (Id Desc, Email Asc) List findFirstByNameOrderByIdDescEmailAsc(String name); // id desc, em..
like 'TEXT%' List findByNameStartingWith(String name); like '%TEXT' List findByNameEndingWith(String name); like '%TEXT%' List findByNameLike(String name); 호출 코드 (파라미터에 직접 '%test%'를 넣어줘야한다.) userRepository.findByNameLike("%test%") Contains List findByNameContains(String name); 호출 코드 (파라미터에 직접 '%test%'를 넣어줄 필요가 없다.) userRepository.findByNameLike("test")
NotNull List findByIdIsNotNull(); // id is not null NotEmpty List findByAddressIsNotEmpty(); 주의해야할점 String 타입의 변수의 경우 (findByNameIsNotNull()) NAME IS NOT NULL AND NAME != '' 라고 생각할 수 있겠지만, 이게 아니다. User.java 에 아래 코드를 추가한다. private List address; Collection Type 의 not empty 를 체크한다. (address not empty)
Between (LocalDate Type, Long Type 모두 가능) LocalDateTime 타입 변수 List findByCreatedAtBetween(LocalDateTime startDateTime, LocalDateTime endDateTime); long 타입 변수 List findByIdBetween(long startId, long endId); Between~And List findByIdGreaterThanEqualAndIdLessThanEqual(Long id1, Long id2); 실행쿼리 findByIdBetween 메서드와 동일하게 구현된다. between (id>=? AND id
Date After List findByCreatedAtAfter(LocalDateTime yesterday); Date GreaterThan List findByCreatedAtGreaterThan(LocalDateTime yesterday); 실행쿼리 created_at > ? Date GreaterThanEqual List findByCreatedAtGreaterThanEqual(LocalDateTime yesterday); 실행쿼리 created_at >= ? Date Before List findByCreatedAtBefore(LocalDateTime yesterday);
WHERE~AND절 /* WHERE AND */ List findByEmailAndName(String email, String name); WHERE~OR절 /* WHERE OR */ List findByEmailOrName(String email, String name);
전체 리스트 조회 List userList = userRepository.findAll(); 전체 리스트 조회 + regDts 컬럼 역순 정렬 List userList = userRepository.findAll(Sort.by(Sort.Direction.DESC, "regDts")); 데이터 단건 조회 (1) Long Type Id : 1 Optional userOptional = userRepository.findById(1L); Optional 리턴 https://devfunny.tistory.com/330 자바 8의 Optional 등장 NullPointerException NullPointerException은 개발자가 한번이라도 만나봤을 에러이다. 그정도로 흔하게 일어나는 에러로, 이는 “자바의..
요건사항 USER 테이블에서 USER_GRP_ID 의 그룹 별 USER_GENDER 개수와 USER_AGE 개수를 알고싶다. SELECT * FROM USER; USER_ID USER_GENDER USER_AGE USER_GRP_ID 1 F 22 U001 2 F 22 U001 3 M 20 U001 4 M 20 U002 5 F 23 U003 6 M 23 U003 원하는 결과 USER_GRP_GENDER_CNT USER_GRP_AGE_CNT USER_GRP_ID 2 2 U001 1 1 U002 2 1 U003 설명 ** U001의 경우 USER_GENDER = F,M, USER_AGE = 22, 20 일 경우로 각 2개, 2개가 나온다. ** U002의 경우 USER_GENDER= M, USER_AGE = ..