삼항연산자 this.a == 1 ? "a가 1일경우 실행" : "a가 1이 아닐경우 실행"; (1) ? (2) : (3) (1)의 조건이 true이면 (2)를 반환 (1)의 조건이 false이면 (3)을 반환
git branch 목록 조회 git branch git branch 생성 git branch 브랜치명 git branch 생성 후 해당 branch로 이동 git checkout -b 브랜치명 git branch 삭제 git branch -d 브랜치명 git branch명 수정 git branch -m 기존 브랜치명 수정할 브랜치명 Git 원격 저장소 URL 을 변경 git remote set-url origin 변경할 URL Git 원격 저장소 URL 을 조회 git remote -v
StringUtils if (StringUtils.isEmpty(test)) { test변수가 빈문자열인지, NULL인지 StringUtils 클래스의 isEmpty 메소드를 통해 검사한다. 해당 isEmpty를 보기위해 StringUtils 클래스 파일을 읽어보았다. /** * Check whether the given object (possibly a {@code String}) is empty. * This is effectively a shortcut for {@code !hasLength(String)}. * This method accepts any Object as an argument, comparing it to * {@code null} and the empty String. As a ..
IFNULL 함수 IFNULL((SELECT col1 FROM test WHERE idx = 1), '테스트 완료') IFNULL 함수(조건1, 조건2) - 조건 1의 값이 NULL 이면 조건 2를 출력 - 조건 1의 값이 NULL이 아니면 조건 1의 값을 출력
case~when~then 문 CASE col1 WHEN 'a' THEN '햄버거' WHEN 'b' THEN '피자' END AS food CASE~THEN~WHEN 문은 위 예제 한줄로만 봐도 충분히 이해가 가능하다. CASE 컬럼이 WHEN 해당 값이라면, THEN 해당 값으로 변경한다. CASE ~ WHEN ~ THEN ~ WHEN ~ THEN ~ ELSE '' END -> ELSE를 사용하여 나머지 값들도 설정해줄수 있다. 또는, CASE WHEN col1 = 'a' THEN '햄버거' 라고도 할 수 있다.
해당 날짜의 몇 달 후 날짜 구하기 DateTimeFormatter DATE_FORMAT = new DateTimeFormatterBuilder() .appendPattern("uuuu-MM-dd HH:mm:ss") .toFormatter(); LocalDateTime startDateTime = LocalDateTime.parse(startDate, DATE_FORMAT); DateTimeFormatter, LocalDateTime 클래스를 사용한다. startDateTime.getMonth().plus(1) plus 메소드를 사용하여 해당 숫자만큼 더해진 월을 구할 수 있다. (ex, 1월 -> plus(3) -> 4월)
두 날짜 사이의 차이 구하기 (startDate, endDate) DateTimeFormatter DATE_FORMAT = new DateTimeFormatterBuilder() .appendPattern("uuuu-MM-dd HH:mm:ss") .toFormatter(); LocalDateTime startDateTime = LocalDateTime.parse(startDate, DATE_FORMAT); LocalDateTime endDateTime = LocalDateTime.parse(endDate, DATE_FORMAT); log.debug("차이 달: " + startDateTime.until(endDateTime,ChronoUnit.MONTHS)); if (startDateTime.until(..
mybatis 쿼리문 실행결과 컬럼(열) 순서를 고정 SELECT col1, col2, col3 FROM test 위 SELECT 해온 쿼리의 결과를 리스트로 받아올때, 리스트의 순서를 col1, col2, col3로 고정시키고 싶은 경우가 있다. 하지만 hashMap을 resultType으로 받는 위 결과를 보면 SELECT 컬럼 순서대로 조회되지 않는다. SELECT col1, col2, col3 FROM test 결과타입 resultType을 "java.util.LinkedHashMap" 으로 변경하면, SELECT 선언 컬럼 순서대로 데이터를 담을 수 있다.
String, StringBuffer, StringBuild 비교 String, StringBuffer, StringBuild 는 모두 문자열 관련 클래스이다. String은 불변함 (immutable) StringBuffer, StringBuilder는 변함 (mutable) String 객체의 불변함이 무슨뜻인지 알아보자. String test = "a"; CASE1. test += "b"; CASE2. test.concat("b"); 위 간단한 코드에서, test String 객체는 Hip 메모리 영역에 생성된다. 따라서 두번째 코드에서 += 또는 concat 메소드를 사용하였을때 생성되었던 처음 메모리가 아닌, 새로운 메모리를 생성한다. + 연산자, concat 메소드를 통해 새로 생성된 Stri..
정적 팩터리 메서드 클라이언트가 클래스의 인스턴스를 얻는 전통적인 수단은 public 생성자 이다. 하지만 한가지 기법이 더 있다. 클래스는 생성자와 별도로 정적 팩터리 메서드 (static factory method)를 제공할 수 있다. 그 클래스의 인스턴스를 반환하는 단순한 정적 메서드 말이다. public static Boolean test(boolean b) { return b ? Bollean.TRUE : Boolean.FALSE; } 클래스는 클라이언트에 public 생성자 대신 정적 팩터리 메서드를 제공할 수 있다. 정적 팩터리 메서드의 장점 1) 이름을 가질 수 있다. 생성자에 넘기는 매개변수와 생성자 자체만으로는 반환될 객체의 특성을 제대로 설명하지 못한다. 정적 팩터리는 이름을 잘 지으..
Mybatis 실행결과 Return spring 프로젝트를 할때 serviceImpl에서 mappe파일을 호출하여 쿼리가 실행될때 이 쿼리로 인해 변경되거나 삽입되거나 삭제된 행의 개수를 가져올 수 있다. 1. count : insert된 개수가 리턴된다. int count = ExamMapper.insertUsers(); if (count < 1) { Log.info("변경사항 없음"); } 2. count : update된 개수가 리턴된다. int count = ExamMapper.updateUsers(userVO if (count < 1) { Log.info("변경사항 없음"); } 3. count : delete된 개수가 리턴된다. int count = ExamMapper.deleteUsers(i..
@RequestParam 필수값 제거 @RequestParam으로 파라미터를 받을때 값이 들어오지 않으면 에러가 발생한다. 필수값이 아닌경우 null 가능으로 지정해줄 수 있다. (required = false를 추가하자. default는 required = true이기 때문에 명시하지 않으면 필수값이 아닐 경우 에러가 발생한다. Before @RequestParam MultipartFile file After @RequestParam(required = false) MultipartFile file