mybatis의 selectKey를 사용하면 insert나 update구문을 실행시키기 전이나(order="BEFORE"), 후에(order="AFTER") 원하는 특정 값을 받을 수 있다. 아래는 ID값을 1 증가 시킨 후 증가 된 아이디를 select 하는 구문이다. 여기서 주의 할 것은 parameterType이다. 실제로 쓰이는 값은 name하나이지만, nextId라는 값을 받기 위해서는 이 값을 받아 줄 수 있는 무언가가 필요하다. name 만 사용한다고 생각하여 parameterType을 String으로 쓰면 아래 에러를 볼 수 있다. "nested exception is org.apache.ibatis.executor.executorexception: no setter found for th..
아래와 같이 반복되는 값이 많으면, 우리는 변수를 사용하고 싶다. 현재 날짜가 세번이나 반복된다. SELECT CASE WHEN ((SELECT COUNT(*) FROM TB_INFO I WHERE I.REGIST_DATE > DATE_FORMAT(NOW(), '%Y%m%d')) = 0) THEN CONCAT(DATE_FORMAT(NOW(), '%Y%m%d'), '-', '0001') ELSE CONCAT(DATE_FORMAT(NOW(), '%Y%m%d'), '-', LPAD(NEXT_ID + 1, '4', '0')) END AS no FROM TB_KEY_GENERATE WHERE NAME = 'injeong'; mysql 변수 사용법은 간단하다. 아래처럼 사용하면 된다. @변수명:=값 SELECT A..
한 컬럼 값의 최댓값을 가져와서 +1을 해줘야 할 때 바로 생각해 낼 수 있는 방법은 아래와 같이 서브쿼리를 사용하는 방법이다. UPDATE tb_key_generate SET NEXT_ID = (SELECT NEXT_ID FROM tb_bot_key WHERE name = 'injeong') + 1 WHERE name = 'injeong'; 그러나 항상 서브쿼리는 성능이 안좋다는 이야기를 많이 들어서 변경 방법을 찾아보니 join으로 변경 할 수 있었다. (사실 이정도 쿼리는 성능상의 차이가 없다. 하지만 조인으로 변경 할 수 있는지를 아는것과 모르는것은 하늘과 땅차이라고 생각한다. ) UPDATE tb_key_generate t1 INNER JOIN tb_key_generate t2 ON t1.nam..
1️⃣ template 작성 - 아래와 같이 리스트 안에 맵, 맵 안에 리스트를 가진 구조의 데이터를 파싱 할 것이다. [ { "date":"", "time":"", "categoryName": "", "keyword" : [ "keyword1", "keyword2", "keyword3" ] } ] 2️⃣ 데이터 파싱하기 async function drawAssessmentList(assessmentList) { let template = document.getElementById("trTemplate").innerHTML; Mustache.parse(template); _.forEach(assessmentList, (assessment, i) => { let keywords = assessment.ke..
axios는 기본적으로 비동기이기 때문에, 순서대로 실행되지 않는다. 처음 착각한 부분은 요청하고 바로 데이터를 받아와서 then 구문이 실행한다고 생각한 부분이다. 아래 코드는 forEach로 반복을 하고 있는데 나는 요청/응답-요청/응답-요청/응답 이렇게 실행 되는 줄 알았는데, 아래 코드는 요청-요청-요청-응답-응답-응답 이런식으로 실행돼었다. 그래서 원하는 데이터를 가지고 로직을 수행 할 수 없었다. ❎ 기존 코드 function contentsList(intentList) { _.forEach(intentList, (intent)=> { let intentId = intent.intentId; if(!contentSet.has(intentId)) { axios.get(url, {params : ..
다중디비 설정은 간단한데 아주 중요한..부분이 있다. 이 부분을 놓치면...몇시간동안 뻘짓 할 수도 있으니...꼭 확인하기! 0️⃣ DB dependency - 오라클은 maven에서 정식으로 지원하지 않기 때문에 아래처럼 repository를 설정해줘야 드라이버를 다운받을 수 있다 - DB버전 : 오라클 11g , mariaDB 10.6 oracle ORACLE JDBC Repository http://www.datanucleus.org/downloads/maven2/ com.oracle.ojdbc ojdbc8 19.3.0.0 org.mariadb.jdbc mariadb-java-client 2.6.0 1️⃣ datasource 설정 classpath:/egovframework/egovProps/glo..
전자정부프레임워크에서 스케쥴러 사용이 필요해 1번방법으로 구현했다가, 스케쥴러 시간 설정을 설정파일로 빼달라는 요청이 있어서 2번 방법으로 다시 구현했다. 사실 이 요청은 시간을 Globals.properties로 빼달라는 것인것 같았지만.. 1번 방법에서 단순히 값을 가져와서 넣는건 "attribute value must be constant"오류가 났다. 뭔가 해결하는 방법이 있겠지만, 시간이 없어서 2번방식으로 했다! (단순히 static final을 붙여주는건 안됐다 ㅠㅠ) 1. @Scheduled 어노테이션 방식 어노테이션 방식은 아주 간단하다. 1️⃣ 설정파일 (context-scheduler.xml) 2️⃣ 스케쥴러로 실행 할 메서드 2-1. @Component 어노테이션으로 bean 등록 ..
var EVENT_DOUBLE_CLICK_DELAY = 200; // Adjust max delay btw two clicks (ms) var eventClickPending = 0; document.getElementById('btn').addEventListener('click', function(e){ if ((e.detail === 2 ) && (eventClickPending!== 0)) { // console.log('double click action here ' + e.detail); clearTimeout(eventClickPending); eventClickPending = 0; // call your double click method console.log("더블클릭"); } else..
- Total
- Today
- Yesterday
- 아파치카프카
- Spring
- 코딩테스트
- javascript
- Kubernetes
- 쿠버네티스
- 도커
- springboot
- softeer java
- softeer
- 스프링
- nginx
- 자바스크립트
- 리액트
- 자바코테
- 현대
- react
- Linux
- 톰캣
- 오토에버코테
- centos
- 현대코테
- tomcat
- java
- mysql
- 현대오토에버
- 전자정부프레임워크
- 코테
- Docker
- 자바
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |