1. setInterval()

일정한 시간 간격으로 작업 수행

 

 

2. clearInterval()

타이머를 중지하는 함수

 

 

3. setTimeout()

일정 시간 이후 작업을 한 번 수행하는 함수. 저장된 시간 사이에 작업 시간이 추가됨.

 

* 1초 = 1000ms (단위는 ms로 적어야 함)

해당 페이지를 들어갔을 경우

org.springframework.jdbc.UncategorizedSQLException: SqlMapClient operation; uncategorized SQLException for SQL []; SQL state[null]; error code [0]; iBatis "The error happend wile setting a property on the result object."

라는 에러가 발생했다.

 

쿼리에서 조회하는 값이 NULL일 경우, resultMap과 VO에 선언된 값이 매핑되지 않아 발생한 오류였다.

 

iBatis에서 resultMap이 선언된 부분에 nullValue를 추가로 기입하여 해결했다.

1
2
3
4
<!-- result property를 선언하는 부분에 nullValue를 추가로 기입한다.
     0이든 공백이든 null일 떄의 값을 처리하는 방식이니 둘 다 가능하다. -->
<result property="viewCount" column="VIEW_COUNT" nullvalue="0" />
<result property="viewCount" column="VIEW_COUNT" nullvalue="" />
cs

이클립스 Help > Install New Software 클릭

 

 

 

 

* 설치해야 할 소프트웨어 종류

 

1) Spring Core 3.7.3 (필수)
    http://dist.springsource.com/release/TOOLS/update/e4.4/
    Core / Spring IDE -> Spring IDE Core


2) UML2 Extension 5.1.2 (필수)
    http://download.eclipse.org/releases/mars/
    Modeling -> UML2 Extender SDK


3) Subversive SVN Connector 6.0.1 (필수)
    http://download.eclipse.org/releases/mars/
    Collaboration -> Subbersive SVN Team Provider(3.0.4)
    http://community.polarion.com/projects/subversive/download/eclipse/5.0/mars-site/
    Subversive SVN Connectors -> Subversive SVN Connectors(5.0.3) 설치
    SVNKit 1.8.12 Implementation(5.0.3) 설치


4) eGovFrame 3.6.0 (필수)
    http://maven.egovframe.kr:8080/update_3.6/
    필요한 플러그인 설치(전부 다 설치했음)


5) JUnit 4.12 (필수)
    이클립스에 내장되어있어서 별도 설치과정 필요없음


6) MyBatipse 1.0.23 (선택)
    http://dl.bintray.com/harawata/eclipse
    MyBatipse -> MyBatipse 설치


7) PMD 4.0.11 (선택)
    https://sourceforge.net/projects/pmd/files/pmd-eclipse/update-site/
    PMD for Eclipse 4 -> PMD Plug-in 설치


8) FindBugs 3.0.1 (선택)
    http://findbugs.cs.umd.edu/eclipse
    FindBugs -> FindBugs Feature 설치


9) Properties Editor 6.0.4 (선택)
    http://propedit.sourceforge.jp/eclipse/updates/
    PropertiesEditor 설치


10) EclEmma 2.3.3 (선택)
      http://update.eclemma.org/
      EclEmma -> EclEmma Java Code Coverage 설치


11) Gradle 1.0.21 (선택)
     http://download.eclipse.org/buildship/updates/e45/releases/1.0
     Buildship:Eclipse Plug-ins for Gradle -> Buildship:Eclipse Plug-ins for Gradle 설치


12) Developer Tools 23.0.7 / Android Connector for M2E 1.4.0(안드로이드 개발 필수)
     http://rgladwell.github.com/m2e-android/updates/
     Developer Tools 모두 설치 (Developer Tools)
     Android for Maven Eclipse -> Android for Maven Eclipse 설치 (Android Connector for M2E)

html의 form 안에서 허용되지 않은 형식의 값 입력을 방지하기 위해 사용하며 submit 이벤트 발생시 입력 여부, 입력 형식을 검사한다.

 

JSON 형식으로 정의해 놓으면 스스로 동작하기 때문에 편리하게 사용할 수 있다.

 

 

* 참고 : https://jqueryvalidation.org

1
2
3
4
5
6
<select id="" resultClass="egovMap">
    SELECT
        TO_CHAR(WN_CONCAT(STUDENT)) AS STUDENT
    FROM
        SCHOOL
</select>
cs

 

이와 비슷한 쿼리를 출력하여 json으로 출력해야 하는 일이 있었는데, 자꾸 버전이 맞지 않는다는 JSON 오류가 났었다.

 

오라클에서 WN_CONCAT을 사용시 해당 컬럼을 단일 컬럼으로 합쳐 출력하지만, egovMap에서는 해당 컬럼을 배열로 받아온다는 사실을 깨닳았고 WN_CONCAT으로 단일 컬럼화한 것을 한 번 더 TO_CHAR() 로 문자화 해줬더니 오류가 해결되었다.

* 인코딩

네트워크를 통해 정보를 공유할 시, 어떤 시스템에서도 읽을 수 있도록 ASCII 문자로 바꿔주는 것이다.

모든 네트워크를 통한 전송에는 ASCII 문자를 기반으로 하고 있는데, 특히 한글이나 특수문자의 경우 2진수 바이트 코드로 변환해서 전송하면 반는 상대방의 시스템에 따라 해석이 불가한 경우가 많아지기 때문에, 인코딩이 필요하다.

 

 

1. escape()

특정 아스키 문자를 제외하고 전부 유니코드로 변환

encodeURI() 와 Component 의 중간 정도의 범위로 인코딩

16진수 형식으로 표시 (ex. 1바이트 : %XX / 2바이트 : %uXXX)

 

 

2. encodeURI()

인터넷 주소 표시에 쓰이는 특수문자들은 인코딩 하지 않음 (ex. : ; / = ? & 등은 인코딩 하지 않는다)

보통 파라미터를 전달하는 URI 전체를 인코딩시 사용

 

 

3. encodeURIComponent()

인터넷 주소 표시에 쓰이는 모든 문자를 인코딩

파라미터 하나하나 따로따로 인코딩시 많이 사용함

(한꺼번에 넘기는 경우, 파라미터 값 연결시 쓰이는 '&' 등도 인코딩 되어 버리니까)

http:// ... 가 http%3A%2F%2F로 인코딩됨

 

 

* java.net.URLEncoder.encode는 encoderURIComponent() 와 비슷하지만, encoderURIComponent() 가 인코딩 하지 않는 ! ( ) 3개도 인코딩 한다.

 

* 자바스크립트에서 지원하는 인코딩은 모두 utf-8 (Ajax도 utf-8)

* 자바스크립트에서 파라미터를 Controller 단으로 보내는 경우, 받는 Controller 단에서도 UTF-8 인코딩 처리를 해줘야 한다. [ ex. request.setCharacterEncoding("UTF-8"); ]

 

1. 정의

LENGTH 

 LENGTHB

 문자열 길이 반환

 문자열의 byte 반환

 공백을 포함한 문자열 길이를 반환

 영문(1byte), 공백(1byte), 한글(3byte)

 * 한글은 DB charset에 따라 다를 수 있음

 

 

2. 예시

1
2
3
4
SELECT
  LENGTH('180712 테스트') AS LENGTH1,
  LENGTHB('180712 테스트') AS LENGTHB1
FROM DUAL;
cs

같은 글자인 '180712 테스트' 라는 문자열의 길이와 byte가 어떻게 차이나는지 알아보도록 한다.

 

LENGTH와 LENGTHB의 차이를 알 수 있다.

1. 정의

CRUD중 조건에 따라 CUD가 가능한 명령어이다.

MERGE INTO 조건에 해당하는 행이 존재시 UPDATE / 없으면 INSERT 한다.

 

 

2. 구문

1
2
3
4
5
6
7
8
9
10
MERGE INTO [스키마.]테이블명
    USING (update나 insert될 데이터 원천)
        ON (update될 조건)
WHEN MATCHED THEN
    SET 컬럼1 = 값1, 컬럼2 = 값2, ...
WHERE update 조건
    DELETE WHERE update_delete 조건
WHEN NOT MATCHED THEN
    INSERT (컬럼1, 컬럼2, ...) VALUES (값1, 값2,...)
        WHERE insert 조건;
cs

 

 

3. 예시

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<insert id="mergeBoard">
    MERGE INTO BOARD_USER B1
    USING (
        SELECT USER_ID, DEPT_CD
        FROM USER
        WHERE DEPT_CD IN (
            SELECT DEPT_CD
            FROM DEPT
            START WITH DEPT_CD = #deptCd#
            CONNECT BY PRIOR DEPT_CD = UPPER_DEPT_CD
        )
    ) B2 ON (B1.BOARD_NO - #boardNo# AND B1.USER_ID = B2.USER_ID)
    WHEN MATCHED THEN
        UPDASTE SET B1.BOARD_AUTTHOR = #boardAuthor#
    WHEN NOT MATCHED THEN
        INSERT (BOARD_NO, USER_ID, BOARD_AUTHOR)
        VALUES (#boardNo#, B2.USER_ID, #boardAuthor#)        
</insert>
cs

 

 

4. 참고사항

CLOB 타입을 사용시 2000bytes가 넘을 때에는 ORA-06600 오류가 발생한다.

또한, ON 절에 기술된 컬럼이 WHEN MATCHED THEN 다음에 오는 UPDATE 행에는 올 수 없다.

UPDATE할 컬럼의 PK, UK 등을 명시하지 않으며, INSERT 시에는 PK, UK등의 값을 넣어야 한다.

1. 종류

 isNull

 null일 경우

 isNotNull

 null이 아닐 경우

 isEmpty

 공백일 경우

 isNotEmpty

 공백이 아닐 경우

 isGreaterTan

 >

 isGreaterEqual

 >=

 isLessThan

 <

 isLessEqual

 <=

 isEqual

 ==

 isNotEqual

 !=

 

 

2. 사용 예시

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<sql id="Condition">
    WHERE 1 = 1
    -- searchDeptCode 파라미터가 null이 아닐 경우, AND DEPT_CODE = #parameter# 구문이 실행된다.
    <isNotNull property="searchDeptCode" prepend="AND">
        DEPT_CODE = #searchDeptCode#
    </isNotNull>
    -- searchDeptCode 파라미터가 1000과 비교하여 일치할 경우, DEPT_CODE <> 1000 구문이 실행된다.
    <isEqual property="searchDeptCode" compareValue="1000">
        AND DEPT_CODE <> #searchDeptCode#
    </isEqual>
</sql>
 
-- include 구문으로 sql에 id값으로 준 것들중, 원하는 id를 refid로 선언한다.
<select id="selectDept" resultClass="egovMap">
    SELECT * FROM DEPT
    <include refid="Condition" />
</select>
cs

1. UNION

UNION DISTRINCT이며, UNION으로 쓰인다.

모든 데이터 형식이 동일한 ROW가 있을 경우, 하나의 ROW로 합쳐서 조회된다.

두 테이블의 결합이며, 결합시에는 두 테이블의 중복되지 않는 값만 반환된다.

중복을 제거하기 위해 불가피하게 정렬한다.

자료가 많거나, 인덱스가 되어있지 않은 컬럼들을 대상으로 하면 쿼리를 수행하는 시간이 길어질 수 있다.

 

 

2. UNION ALL

두 테이블의 중복되는 값까지 함께 반환한다.

중복된 ROW가 있을 경우, 모든 ROW를 보여준다.

'BackEnd > DBMS' 카테고리의 다른 글

Oracle :: LENGTH vs LENGTHB 차이  (0) 2018.07.12
Oracle :: MERGE INTO  (0) 2018.07.06
Oracle :: Flashback (데이터 복구)  (0) 2018.03.12
Oracle :: ORDER SIBILING BY  (0) 2018.03.12
Oracle :: ORA-01861 Literal does not match format string  (0) 2018.01.25

+ Recent posts