본문 바로가기

분류 전체보기159

리스트에서 검색한 항목 다시 돌아와도 그대로 유지하기 처음에는 이 부분을 놓치고 단순히 목록 버튼이나 수정 버튼을 누르면 router.back()으로 동작하게 하였다.그러다보니 이전에 리스트에서 만약 100페이지를 보고 있으면 해당 글 누르고 다시 돌아오면 다시 1페이지로 돌아오는것이다. 이게 데이터가 점점 많아지니 너무 불편하다는 것을 깨달았다. 그래서 리스트에서 아카이브 디테일 페이지에 들어갈 수 있는 모든 경로에 route와 router를 사용하여필요한 데이터를 넘겨주고 받아서 그전에 봤던 페이지수와 검색어 등을 유지하여 이전에 봤던 리스트와 똑같게 불러올 수 있게끔 수정하였다. 여러 페이지를 많이 수정하였는데 그 중 하나의 페이지만 예를 들어 보겠다.우선 공개관리 페이지에서 꼭 넘겨줘야할 값들은 아래와 같다.prevPage(페이지경로)pageNum(.. 2024. 10. 29.
[ORACLE] union all로 조인한 테이블 특정 데이터 값 수정 SELECT * FROM ( SELECT TMP_PAGE.*, ROWNUM ROW_ID FROM ( SELECT ARCH_TYPE, CLASS_TYPE, COUNT, REG_DT FROM ( SELECT TO_CHAR(a.REG_DT, 'YYYY-MM-DD') AS REG_DT , (SELECT CODE_NAME FROM ARCH_CODE_TBL WHERE P_ID = 'ARCH_TYPE' AND CODE_ID = a.ARCH_TYPE) AS ARCH_TYPE, (SELECT CODE_NAME FROM ARCH_CODE_TBL WHERE P_ID = 'TYPE' AND CODE_ID = a.CLASS_TYPE) AS CLASS_TYPE, COUNT(1) AS COUNT FROM ARCH_INFO_TBL .. 2024. 10. 29.
[ORACLE] 하나의 테이블에 두개의 기본키 이번 프로젝트에서 설문조사라는 파트를 맡아서 개발을 했었다. 첨에 이 부분이 상당히 복잡하고 어려웠다.ㅠㅠ우선 테이블은 3개가 연결되어있다. TOLL_INFO_TBL TOLL_DETAIL_TBLTOLL_RESULT_TBL간단하게 설명하자면 TOLL_INFO_TBL은 설문 포맷의 질문에 관련된 내용이 들어가고TOLL_DETAIL_TBL은 해당 질문에 대한 답변 항목들, 그리고 답변 유형 관련된 내용이,TOLL_RESULT_TBL은 어떤 답변을 선택하였는지에 대한 내용이 들어있다.세개의 테이블에는 TOLL_ID로 연결되어 있다. 기존 정상적으로 작동이 되었는데 DB 설정을 다시 하면서 TOLL_DETAIL_TBL 에서 에러가 났다.무결성 에러가 나서 확인해보니 기존 TOLL_DETAIL_TBL에는 TOLL_.. 2024. 10. 28.
@RequestBody, @RequestPart, @RequestParam, @ModelAttribute spring boot를 사용하면서 저는 대부분 @RequestBody 어노테이션을 사용하였습니다.bean을 적극적으로 활용하고 있었기 때문에 @RequestBody를 사용하면 http 요청으로 넘어오는 body 내용이 매핑이 되기 때문입니다.하지만 이후 등록 페이지를 개발하는 도중 이미지와 파일을 저장 해야하는 경우가 발생하였습니다.이미지와 파일을 넘겨줄 때 어떤 어노테이션을 사용해서 데이터를 받을까 구글링을 해본 결과생각보다 다양한 어노테이션이 있었습니다.  1. @RequestBody HTTP 요청으로 넘어오는 body 내용을 HttpMessageConverter를 통해 JavaObject로 역직렬화한다.multipart 요청이 아닌 어떤 바이너리 파일을 포함하고 있지 않은 데이터를 받는 역할을 한다.. 2024. 10. 23.
[Vue] Radio Button radio버튼은 여러개의 선택지 중 하나만 선택할 수 있어야한다.하지만 각각의 radio 버튼이 독립적으로 만들어져서 모든 radio버튼을 선택이 되는 버그가 발생하였다. 여러개의 선택지 중 하나만 선택할 수 있게 하려면 radio버튼들을 그룹화하여 하나의 그룹으로 묶는 방법이 있다.바로 radio버튼의 속성 중 name 속성을 이용하는 것이다. radio 버튼을 그룹화하기 위해 name속성을 설정하고, 이를 고유한 값으로 설정하면 정상적으로 잘 동작이 된다.  코드확인하기더보기                       설문 항목 구성                   @click="createServeyList"           class="btn_ic_md btn_pri"           title=.. 2024. 10. 2.
ORA-08002 : 시퀀스 SEQ.currval은 이 세션이 정의되지 않습니다. ORA-08002: sequence ARCH_KNOW_SEQ.CURRVAL is not yet defined in this session  원인?시퀀스의 nextval보다 먼저 currval이 호출되었기 때문.즉, nextval이 먼저 실행되어야 currval을 실행할 수 있다.  *CURRVAL : 시퀀스 현재 값 조회*NEXTVAL : 시퀀스 현재 값 다음 값 조회 2024. 10. 2.
[Oracle] COMMIT, ROLLBACK COMMIT모든 자업을 정상적으로 처리하겠다고 확정하는 명령어.트랜잭션의 처리 과정을 데이터베이스에 반영하기 위해서, 변경된 내용을 모두 영구 저장한다.COMMIT을 수행하면, 하나의 트랜잭션 과정을 종료하게 된다.TRANSACTION(INSERT, UPDATE, DELETE) 작업 내용을 실제 DB에 저장한다.이전 데이터가 완전히 UDPATE된다.모든 사용자가 변경한 데이터의 결과를 볼 수 있다. ROLLBACK작업 중 문제가 발생했을 때, 트랜잭션의 처리 과정에서 발생한 변경 사항을 취소하고, 트랜잭션 과정을 종료시킨다.트랜잭션으로 의한 하나의 묶음 처리가 시작되기 이전의 상태로 되돌린다.TRANSACTION(INSERT, UPDATE, DELETE)작업 내용을 취소한다.이전 COMMIT 한 곳까지만.. 2024. 4. 29.
List, Set, Map 차이점 List : 순서가 있으며, 데이터(값) 중복 허용 Set : 순서가 없으며, 데이터(값) 중복을 허용하지 않음 Map : Key&Value 구조, Key는 중복을 허용하지 않으며, Value는 중복을 허용 Collection - Java에서 Collection이란 데이터의 집합, 그룹을 의미 - JCF(Java Collection Framework)는 다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합을 의미 Collection 주요 인터페이스 - List, Set, Map 1. List - 입력 순서를 유지하며, 데이터 중복을 허용 - 인덱스를 통해 저장, 데이터에 접근 가능 List 인터페이스의 주요 구현체 - ArrayList - 단방향 포인터 구조 - 데이터 .. 2024. 4. 8.
[MyBatis] resultMap resultMap은 결과를 매핑하는데 사용된다.resultMap은 쿼리 결과를 자바 객체에 매핑하는데 도움이 되는 구성요소이다. 예를들어, 데이터 필드가 clob인 데이터는 resultMap을 통해 String으로 매핑시킬 수 있다. 기능1. 쿼리 결과를 매핑하기 위한 매핑 정보를 정의한다.2. 쿼리 결과에서 데이터를 추출하고 이를 자바 객체의 필드에 할당한다.3. 쿼리 결과를 매핑하여 자바 객체의 인스턴스를 생성한다.   cashingClob은 resultMap의 식별자이며 이는 mybatis 설정 파일에 정의된 resultMap의 이름이다.  resultMap에 cashingClob이라 적으면 해당 select문의 쿼리결과를 cashingClob의 규칙에 따라 매핑된다. 2024. 4. 3.
Oracle에서 시퀀스(Sequence) 사용하기 아무래도 이번 프로젝트를 진행하면서 백엔드 쪽을 배우고 있기 때문에 많이 서툴다. 데이터를 다룰 때, 각 데이터의 고유 ID가 있다.부장님이 시퀀스를 이용하라고 하셔서 이것에 대해 기록하고자 한다.  오라클에서는 자동 증가 컬럼을 사용할 수가 없다. 다른 DB에는 컬럼 자체에 해당 옵션이 있다고 한다.하지만 오라클에서는 없기 때무에 컬럼의 값을 증가시키기 위해서는 MAX(컬럼) + 1 또는 시퀀스를 사용하여 일련번호를 부여해야한다.     SELECT arch_info_seq.CURRVAL FROM DUAL  그리고 마이바티스에서 사용할 땐 위와 같이 먼저 작성해주고 아래에 insert문을 작성한다.insert문을 작성할 때 id값으로 arch_info_seq.nextval이라고 작성해준다. 시.. 2024. 4. 3.
[MyBatis] WHERE 1=1 SELECT id, username, nicknameFROM member_testWHERE 1=1 AND username = #{username} AND nickname = #{nickname}  위의 쿼리에서 username과 nickname에 null이 들어오면 전체 데이터를 조회한다.전체 조회가 된다는 사실을 의도하지 않거나 예상하지 못한다면 데이터 양에 따라 어플리케이션 응답 지연 문제 등이 발생할 수 있다. 만약 쿼리가 DELETE 혹은 UPDATE였다면 전체 데이터가 변하는 상황이 발생할 수도 있다.  WHERE 1=1 피하기구글링을 해본 결과 위와 같은 이유로 여러 블로그에서 WHERE 1=1을 사용하는 것에 대해 피하자는 글들이 많았.. 2024. 4. 3.
[springboot, mybatis] pagination 프론트에서 page와 size를 넘겨주고 백엔드에서 해당 값들을 받을 때 mybatis에서는 #{} 이런식으로 기재한다.그리고 parameterType이 kr.library.ar.common.app.ble.bean.UserBleBean이라고 지정해주었기 때문에 해당 bean에 page와 size를 추가해준다.여기서 이렇게 bean으로 타입을 주면 계속해서 bean에 추가를 해야해서 map을 만들고 map에 추가하는 방법도 있다고 말씀해주셨다.   SELECT * FROM ( SELECT TMP_PAGE.*, ROWNUM ROW_ID FROM ( ) TMP_PAGE) PAGE WHERE ROW_ID #{endRow}.. 2024. 4. 3.
부모, 자식 컴포넌트 v-model 연동 부모 컴포넌트(form태그)와 자식 컴포넌트(input태그) 사이에 v-model 연동을 하고 싶었다.. 어떻게 해야할까? v-model의 개념 - v-model은 template에서 각 엘리먼트가 사용하는 data 값이다. - v-model은 부모 - 자식 관계가 없는 컴포넌트에서는 자유롭게 사용이 가능하다. 그러나 부모-자식 간 관계가 있는 컴포넌트에서 자식 컴포넌트가 부모 컴포넌트의 값을 가져와 v-model로 사용하면 아래와 같은 에러가 난다고 한다. vue.runtime.esm.js:1888 Error: [vuex] do not mutate vuex store state outside mutation handlers. 그렇기 때문에 자식 컴포넌트가 부모의 값을 핸들링하면 v-model이 아닌 :.. 2024. 4. 3.
Vue에서 드롭다운 메뉴 바깥 클릭시 메뉴 닫기 외부 영역 인식하기 1. refs 속성으로 dom 요소 접근하기 우선 외부 영역 클릭을 인식하기 위해서 요소에 직접 접근할 수 있도록 해주는 refs 속성을 사용해야 한다. ref="참조명" 위와 같이 접근 가능 2. eventListener로 클릭 이벤트 처리하기 앞에서 참조할 요소 지정했으면, dom요소가 클릭되었는지를 감지하기 위해 eventListener를 사용해야 한다. window.addEventListener('click', this.onClick); dom에 클릭이벤트 발생했으면 onClick 함수 실행한다. onClick(e){ if(e.target.parentNode !== this.$refs.card){ // 결과창 닫기 } } {{ dropDown }} {{ item }} dropd.. 2024. 3. 30.
CLOB LOB 데이터 타입 데이터 타입설명 CLOB 문자형 대용량 객체 / 고정길이와 가변길이 문자집합 지원 NCLOB 유니코드를 지원하는 문자형 대용량 객체 BLOB 이진형 대용량 객체 BFILE 대용량 이전 파일에 대한 위치, 이름 저장 LOB이란 Large Object의 약자로 대용량 데이터를 지정할 수 있는 데이터 타입이다. 일반적으로 그래픽, 이미지, 사운드 등 비정형 데이터를 지정할 때 L,OB 타입을 사용한다. 문자형 대용량 데이터는 CLOB, NCLOB 그래픽, 이미지, 동영상 등의 데이터는 BLOB을 사용한다. 2024. 3. 30.
728x90