본문 바로가기

728x90

개발/BACK

(86)
[Java] 문자열 붙이기/문자열 자르기 + JAVA 8 문자열을 잘라서 파싱하거나 배열에 각각 저장시킬 때, 사용할 수 있는 방법들이다 1 String,String 문자열 붙이기 동일한 String 타입일 때, + 연산자로 문자열을 붙일 수 있다 String a = "a"; String b = "b"; String c = "c"; String d = "d"; String e = "e"; String type = " "; 1) String alphabet = a+b+c+d+e; 2) String alphabet = a+type+b+type+c+type+d+type+e+type; [결과 값] 1) abcde 2) a b c d e 2 String,Int 붙이기 String a = "a"; int one = 1; 1) String mer = a +one; OR S..
[Java] Optional 클래스 사용법 + NullPointerException 객체 지향 언어인 JAVA로 개발을 하고 있는 분들은 모를 수가 없는 오류가 있다 NullPointerException 코딩도 사람이 하는지라, 서비스 로직을 구현하다보면 널 체크가 빠진 곳이 있기도 하고 객체 내부 빈 값을 참조하는 경우가 생긴다 또한, NULL 값 체크를 이리저리 하다 보면, 더러워진 소스코드로 인해 현기증이 난다 JAVA 8 에서는 Optional 이라는 클래스를 사용할 수 있다 해당 클래스의 주요 기능은, Null 체크를 하지 않아도 된다는 것이다 null 값을 포함할 수 있는 클래스이기 때문에, 해당 클래스에서는 클래스 내부에 내장된 메소드들을 이용해서 null 값일 떄의 분기만 처리해주면 되는 장점이 있다 위와 같이 많은 종류의 메소드들을 제공하는데, of() 메소드 처럼 기존..
리눅스 계열 서버 톰캣이 죽지 않을 때 해결 방법 톰캣은 웹 어플리케이션 서버다 많은 자바 프로젝트가 톰캣위에서 구동되고 있는데, 다른 배포파일을 적용하거나 서버가 재가동될 필요가 있을 때, 서버를 내리게 된다 이 때, 스케쥴러가 돌고 있거나, 내부적으로 처리하는 로직, API의 많은 호출 등 여러가지 이유로 톰캣이 비정상적으로 종료될 때가 있다 비정상적으로 톰캣이 종료되면, 다시 서버를 재구동할 때 문제가 되기도 하고, 종료한 줄 알았던 톰캣이 PID를 물고 있어서 메모리를 점유하고 있는 경우도 있다 이런 경우에 종료된 톰캣의 흔적들을 처리해버리는 방법을 포스팅하려고 한다 1 먼저 톰캣이 구동되고 있는 리눅스 서버에 SSH로 접속한다 root 계정이 아니라면 root 계정으로 변경하자 [명령어] su - 비밀번호 입력 2 jps 명령어 입력 해당 명령..
Mysql 테이블 명세서 추출하기 ~ 테이블 정보, 컬럼 정보 프로젝트를 진행할 때나, 인수인계, 프레젠테이션 등 다양한 이유로 데이터베이스 내부 데이터들을 정리해 놓은 문서가 필요할 때가 있다 데이터베이스 컬럼과 코멘트를 같이 출력하고 싶다거나 NULL값, 키 값 컬럼 타입 등 컬럼 명세나 테이블에 대한 명세서가 필요하다면 해당 방식으로 데이터를 추출하면 된다 사실 아주 간단하다 다음 쿼리를 데이터베이스에서 출력하자 SELECT a.table_name ,a.table_comment ,b.column_name ,b.column_comment ,b.column_type ,b.column_key FROM information_schema.TABLES a inner join information_schema.COLUMNS b on a.table_name = b.table..
[Mysql] 특정 컬럼으로 정렬 후, 조회 데이터 ROW에 인덱스 추가하기 특정 컬럼을 기준으로 정렬한 다음, 조회된 순서대로 ROW 마다 번호를 붙여줄 수 있다 id date name 1 2022-07-14 14:23:38 사과 2 2022-07-20 14:23:38 포도 3 2022-07-25 14:23:38 오렌지 4 2022-07-10 14:23:38 멜론 예를 들어 해당 데이터가 있다고 예를들면, 1. id 별로 정렬한 후, 정렬된 순서대로 인덱스를 붙여주기 SELECT id,name,ROW_NUMBER() OVER(ORDER BY date DESC) AS "idx" FROM tb_fruit; SELECT id,name,ROW_NUMBER() OVER(ORDER BY date ASC) AS "idx" FROM tb_fruit; 1.1 ROW_NUMBER() 함수를 이용..
[Mysql] 날짜 차이 계산하기 날짜 차이를 계산하는 방법 1. TIMESTAMPDIFF 날짜 1과 날짜 2사이의 기간 차이를 unit 단위에 맞게 구해서 Retrun TIMESTAMPDIFF(unit,날짜 1, 날짜 2) unit : 두 날짜를 비교하여 나온 데이터를 보여주는 단위다 (초, 분, 시, 일, 월 ,년) EX ) SELECT TIMESTAMPDIFF(month,reg_dttm,'20220819') FROM tb_user WHERE id=1; SELECT TIMESTAMPDIFF(year,reg_dttm,'20220819') FROM tb_user WHERE id=1; SELECT TIMESTAMPDIFF(day,reg_dttm,'20220819') FROM tb_user WHERE id=1; 2. DATEDIFF 날짜 1..
[JAVA] Mysql GROUP_CONCAT 데이터 int 타입으로 변경하기 마이바티스 환경에서 데이터를 GROUP_CONCAT을 사용하여 조회하면 데이터는 문자열 (String) 형태로 데이터를 받게 된다 해당 데이터를 형 변환하는 방법이다 해당 예제에서는 team_id를 기준으로 팀에 속해있는 사용자 번호를 GROUP_CONCAT하여 조회하는 데이터다. 먼저 데이터베이스를 조회하는 쿼리이다. SELECT team_id, team_name, GROUP_CONCAT(user_id) AS "userArr" FROM tb_student GROUP BY team_id; 위와 같이 데이터를 조회하게 되면, team_id team_name userArr 1 청팀 1,2,3,4,5 2 백팀 6,7,8,9,10 이런 식으로 데이터가 조회된다. 마지막 컬럼은 user_id 데이터가 모여있는 ..
[SpringFramework] 마이바티스 환경에서 INSERT,UPDATE 무시하기 스프링 프레임워크 환경에서 개발을 진행할 때, 서비스를 생성하여 데이터를 [등록] 하거나 [수정]하는 경우들이 있다. 하지만 해당 API를 요청하더라도 데이터를 등록하거나 수정하지 않도록 무시하고 싶은 경우가 있을 수 있다 이 방법을 사용하여 구현해 놓으면, 해당 서비스가 실행되어도 데이터베이스에서는 쿼리가 실행되지 않아서 등록되지 않는 현상을 볼 수 있다 구현 우선 해당 기능을 구현하기 위해 데이터베이스에서는 유니크한 인덱스를 생성해야한다. 생성한 유니크 인덱스 값을 통해 중복된 값이 들어오면 무시하도록 구현할 생각이기 때문이다 예를들어서, 책을 빌린 이력을 데이터베이스에 한 개의 row만 저장하고 싶다 그러면 책 빌린 이력테이블에 유니크 인덱스를 생성해준다 CREATE UNIQUE INDEX "id_..

728x90