목록[Web] (89)
요르딩딩
# web.xml 확인 # dispatcher-servlet.xml 확인 - modules > path 확인 # Aunotation 확인
이해 : LIKE조건에 CONCAT함수를 사용하면, 중간에 변수를 적용하여 조회할 수 있습니다. 예시 : AND name LIKE CONCAT('%',#{word},'%')
이번에는 폴더안의 폴더 또는 데이터를 포함하는 계층적인 트리를 만들어 보게되었습니다. 여기서의 요점!!!은 첫번째 테이블에서 계층적인 순서로 조회하기 두번째 조회한 리스트를 depth적으로 표현하기 입니다. 계층 구조적인 데이터를 가진 테이블에서 계층순서로 데이터를 조회하고, 이를 map에서 depth별로 노출될 수 있는 비지니스 로직을 구현해 보았습니다. 아래의 로직은 다시한번 상기시키기 위해 테스트용으로 작성한것입니다. # 테이블 데이터 (계층적 구조를 가진 테이블입니다.) - 테이블 이름 : tree_table - no = parent_no에따라 (자식 - 부모)관계를 가집니다. # 1. 최상위 노드들만 순서대로 조회하기 (이는 depth별로 표현할때 반복문의 횟수를 줄이고자 적용했습니다.) SEL..
서브쿼리로 작성한 후 조인을 할 수 도 있지만 그것보다는 한번의 조인 후 처리하도록 하자. SELECT * , COUNT(B.no) (N개의 수) FROM A LETF JOIN B ON A.no = B.no GROUP BY A.no (1개의 부모키로 그룹화)
Table INNER JOIN LEFT JOIN RIGHT JOIN LEFT OUTER JOIN RIGHT OUTER JOIN FULL OUTER JOIN = LEFT JOIN UNION RIGHT JOIN (MySQL에는 FULL OUTER JOIN 사용불가)
이번 시간에는 메일 템플릿(html)을 활용하여, 필요한 정보를 추가해보도록 하겠습니다. 메일 템플릿은 html 형식이며, html안에는 대체할 변수들을 #변수명# 형태로 수정하여 저장합니다. 이때 url encode으로 인해 "%" -> "%25"로 변경해주어야 합니다. \n" + "\n" + "\n" + ... + "...
종종 개발하다보면 히스토리를 저장하는 테이블에 히스토리정보(변경할 정보)와 기존의 값을 저장 모두 저장해서 사용할 경우가 생깁니다. 예를들어, 사용자가 어떠한 조건에 있어서 2번 수정을 하게되면, 히스토리 테이블에는 2개의 레코드가 쌓입니다. 이때, 수정을 하게되면 기존값을 업데이트되어, 기존에 어떤값을 가지고 있었는 알 수 없게 됩니다. 기존 ["인터넷뱅킹": "T", "카드": "T", "이체": "T"] 1번 수정 ["인터넷뱅킹": "T", "카드": "F", "이체": "T"] -> 1번 수정전의 값을 알 수 없음 2번 수정 ["인터넷뱅킹": "T", "카드": "F", "이체": "F"] > 2번 수정전의 값을 알 수 없음 그리하여, jobb타입을 갖는 칼럼을 추가하여, 기존정보를 저장하여 보존..
context-common.xml => component-scan 빈으로 등록 될 준비를 마친 클래스들을 스캔하여, 빈으로 등록해주는 것. (@Controller, @Service, @Component, @Repository 어노테이션을 붙인 클래스들이 빈으로 등록 될 준비를 한 것이다.) => base-package는 패키지를 어디부터 스캔할지 지정해주는 부분. (base package 기준으로 클래스들을 스캔하여 빈으로 등록) => stereotype은 간략히 말해, 고정된 또는 일반적인 패턴을 의미. => exclude-filter는 @Controller 를 제외하고 싶을때 사용 use-default="false"는 기본 어노테이션 @Controller, @Component @Service등을 스캔..