목록Dev. (8)
Dong Log
여러 용도로 데이터베이스(이하 DB)에 데이터를 insert 한 후, auto_increment 된 키 값을 바로 알고 싶은 경우가 있습니다. 다음 예제는 mybatis 라이브러리로 DB의 User테이블에 'NO' 라는 auto_increment 의 key 칼럼이 있을때 작성법 입니다. // spring framework 기준 // Vo 작성 public class UserVo { Long no; String userId; //... getter setter } @Service public class UserService { @Autwired private UserRepo userRepo; UserVo user = new UserVo(); // String no; String user.setUserId(..
사전적 의미를 살펴보자면 Authentication: 입증, 증명, 인증 Authorization: 허가, 인가 인증 및 인가는 목적에 따라 의미가 조금씩 다를 수 있다. 이제 IT용어로 쉽게 해석하자면 인증: 어떤것을 검증할 수 있는 방법 인가: 인증을 통해 허가된 권한 인증이 있어야 인가가 있는 인과관계(원인과 결과 관계)가 보이시는게 느껴지나요? 예) 인증: 네이버 비밀번호를 찾기 위해 본인'인증'(방법)을 실시했다. 인가: 네이버는 로그인에 성공한 나에게 '나의 프로필' 열람을 '인가' 시켜줬다. (Authorization은 법률용어로 해석하면 의미가 달라진다는 점을 말씀드립니다!)
shift는 배열이라는 대상이 원소(값)을 옮기는 느낌이 드는 반면, unshift는 배열 요소들을 되돌리는 느낌이 드는 단어입니다. 간략하게 javascript 함수 사용법을 알아봅니다. // 배열 데이터가 있다고 가정 var data = [1, 2, 3, 4] Array.prototype.shift() // 인자는 없습니다. data.shift() // return: 1 // 원 data = [2, 3, 4] // 인자를 넣어봐도 결과는 같습니다. data.shfit(1) // return: 2 // 원 data = [3, 4] shift 함수는 맨 첫번째 요소를 반환(return)하고, 원 데이터에서 빠집니다. Array..prototype.unshift(...arg) // 인자는 무한('.shif..
같은 MYSQL의 데이터베이스에서 일부 테이블의 데이터를 검색 후에 다른 데이터베이스 테이블에 INSERT 하고 싶은 부분이 생길 수 있다. 나같은 경우는 회사 사내 DB(데이터베이스)에서 일부 데이터를 빈번히 재사용하고 있는데, 위와 같은 경우가 간혹 생기곤한다. 특정 데이터를 JOIN하여 가져온다던가 CRON을 통해 데이터 동기화를 시키고 싶다던가 하는 예이다. 기본적으로 여러 INSERT를 하기 위해서는 아래와 같이 SQL을 작성한다. (링크) INSERT INTO test_tbl(NAME) VALUES ('운영자5'), ('운영자6'), ('운영자7'); 일부 테이블의 데이터를 검색 후에(SELECT) 다른 데이터베이스 테이블에 INSERT하는 방식은 VALUES 부터 바꿔주면 된다. INSERT..
ui.toast.com/tui-grid TOAST UI :: Make Your Web Delicious! The TOAST UI Is Free Open-source JavaScript UI Libraries Maintained By NHN. ui.toast.com TOAST UI GRID를 이용해 한 프로젝트를 진행하며 느낀 장단점을 서술합니다. 장점: - 무료 라이센스 (2021년 3월 10일 기준) - 셀 커스텀 다양하게 가능 - 많은 데이터를 출력할때 퍼포먼스 양호 (android adapter 패턴과 유사) - 커뮤니티 활성화 단점: - 다른 테이블 라이브러리에 비해 방대한 API로 인한 러닝커브가 큼 무료 오픈소스 치곤 많은 기능을 지원하기 때문에 활용하기 좋다는게 TOAST UI GRID의 결..
쿼리를 작성할때, 날짜를 원하는 폼에 맞게 변경하는 일은 자주 있는 일이다.그때마다 date format을 찾아보곤 하는데 이참에 적어 놓으려고 한다. 사용 예시 - DATE_FORMAT('date 칼럼 이름', %Y-%m%d), 결과: 2019-02-19 %Y연4자리 연도%y연2자리 연도%m월2자리 (00-12)%c월1자리, 10보다 작을경우 (1-12)%M월이름(January, February…)%b월줄인 이름(Jan, Feb…)%d일2자리 (00-31)%e일1자리, 10보다 작을경우 (0-31)%D일1st, 2nd…%H시24시간 형식 (00-23)%h시12시간 형식 (01-12)%I시12시간 형식 (01-13)%k시24시간 형식, 10보다 작을경우 한자리 (0-23)%l시12시간 형식, 10보다 작..
관계형 데이터베이스(RDB) 에서 1:M 의 관계를 가질 경우 INSERT를 여러번 해야하는 경우가 있다. 그럴때 아래와 같이 INSERT문 한줄 한줄을 수행하는것이 아닌, 하나의 INSERT 쿼리로 한번에 가능하다. - 기존 insert 1개씩 쿼리를 수행할때 INSERT INTO test_tbl(NAME) VALUES('운영자1'); INSERT INTO test_tbl(NAME) VALUES('운영자2'); INSERT INTO test_tbl(NAME) VALUES('운영자3'); .... - 한번의 INSERT 문으로 한번에 수행할때 INSERT INTO test_tbl(NAME) VALUES ('운영자5'), ('운영자6'), ('운영자7'); 간결하고 좋다!
비즈니스 로직에서 기존에 존재하는 데이터를 확인한 후에 insert 쿼리를 수행하면서 이 과정을 한 쿼리에서 진행할 수 없을까? 해서 찾아봤는데 아래와 같이 처리할 수 있었다. INSERT INTO TEST_TBL(name) SELECT 'test' FROM DUAL WHERE NOT EXISTS (SELECT name FROM TEST_TBL WHERE name='test'); 기존에 존재하는 데이터를 확인 후에 insert 쿼리를 수행한다면 비즈니스 로직과 두번의 쿼리를 수행하여 효율적이지 못하다. 따라서 이같이 쿼리도 줄이고 비즈니스 로직을 줄일수 있는 효과를 얻을 수 있다. 마지막으로 생소한 부분을 집고 넘어가자 - NOT EXISTS 예약어 : 서브쿼리에만 사용할수 있는 예약어로 단순값에 사용할..