[ myBatis. if. case 문 ]

 

1. 대소문자 무시

   

 

2. and, or

   

 

3. 한글자만 비교 할때는 반드시 .toString()을 해줘야 됨

   

 

    또는 case문장에서

   <when test="s_keyword.equalsIgnoreCase('W')"> 하거나
   <when test='s_keyword.equals("W")'> 이렇게 처리한다.

 

4. in, or를 여러개

   

 

5. case 문

'Web. 기타 언어 > myBatis' 카테고리의 다른 글

myBatis. Sql WHERE문에서 in 처리  (0) 2017.12.05
myBatis - isEmpty, isNull  (0) 2017.12.05
myBatis에서 foreach 사용하기  (0) 2017.06.09
myBatis.oracle.sql.CLOB@ 결과 오류시  (0) 2017.01.31
myBatis.CLOB Column type  (0) 2017.01.31
Posted by 농부지기
,

[ myBatis - Procedure처럼 사용하기 ]

 

1. 정의

    . 보통 myBatis xml에 하나의 tag에 하나의 sql문장만 기술한다.

      하지만 procedure에서 사용할 수 있는 방법이 거의다 가능하다.

 

2. 참고

     . 아래에 정의된 모든 형식은 하나의 tag (select, update, delete)에 기술 가능하다.

 

3. SQL결과 컬럼 1개를 변수에 넣기

   

 

4. INSERT문장을 활용한 임시테이블 생성 및 임시테이블 INDEX생성

   

 

5. 임시테이블 생성 후 INSERT하기

    - 위 sql에서  #용 임시테이블은 drop table이 확실히 되지만 (mssql에서 테스트)

      아래 sql에서 @용 임시테이블은 drop table이 되는지 테스트 해보지 않았음 

   

 

6. Procedure호출 하기

    - EXEC 로 호출 하게 되면 Procedure실제 argument도 기술 할 수 있다.

      이때 장점은 Procedure실제 argument명을 명시적으로 기술했기 때문에

      argument순서와 상관없이 mybatis에 기술 할 수 있다.

      (mssql에서 테스트)

   
Posted by 농부지기
,

[ Grid 튜닝5 - refreshBody ]

 

1. Grid Dynamic 생성 시 튜닝

    . 이슈

      - 보통 Grid Header, Body, Cell등을 dynamic하게 생성할 때 시간이 아주 많이 소비된다.

        이유가 appendContentsCol() 등의 API 를 사용하게 되면 이때마다 grid를 다시 그리기 때문에

        만약, cell을 20개 생성한다면 grid를 20번 새로 그린다는 의미가 될 수 있다.

    . 해결방법

      - Grid.set_enableredraw(false);

      - grid dynamic하게 생성

      - Grid.set_enableredraw(true);

    . 이유

      - set_enableredraw(false); 를 하게 되면 이때 부터 그리드를 그리지 않는다.

         그런 후 grid의 모든 cell, expr등을 입힌 후

         다시 set_enableredraw(true);를 해주면 Grid를 한번만 그리게 된다.

 

2. Dataset변경 시 Grid튜팅

    . 이슈

      - 화면에 상당히 많은 자료가 변경이 되고, expr등이 많이 변경되어야 되는 경우

         grid에 표현이 되어야 되는 이때 속도가 상당히 느려진다.

    . 해결방법1

      - Grid.set_enableredraw(false);

      - data 변경 및 expr변경

      - Grid.set_enableredraw(true);

    . 이유

      - set_enableredraw(false); 를 하게 되면 이때 부터 그리드를 그리지 않는다.

         그런 후 dataset에 모든 자료가 변경 된고, expr등을 변경한 후

         다시 set_enableredraw(true);를 해주면 Grid를 한번만 그리게 된다.

     . 해결방법2

      - Grid.refreshBody(false);

      - data 변경 및 expr변경

      - Grid.refreshBody(true);

     . 이유

       - refreshBody() API가 set_enableredraw()보다 속도가 빠르다.

       - set_enableredraw()는 grid를 처음부터 전체를 다시 그린다.

       - refreshBody()는 변경된(?)부분만 다시 그린다.

       - 참고 : refreshBody()는 변경된(?) 부분만 그리기 때문에 dynamic 하게 grid를 생성할 때는 사용하면 안된다.

                   반드시 dataset 의 oncolumn changed event에서만 가능하다.

 

3. refreshBody() API 의 prototype

    

 

     - nexacro14lib > component > Grid > Grid.js

     

'Nexacro-이론 및 튜닝 > dataset.grid.튜닝' 카테고리의 다른 글

Dataset 튜닝4 - alasql  (0) 2017.11.15
Dataset 튜닝3 - set,get  (1) 2017.11.15
Dataset 튜닝2 - Hashmap방식  (0) 2017.11.15
Dataset 튜닝1 - 정의  (0) 2017.11.15
Posted by 농부지기
,

[ Nexacro.Textarea-특정단어 찾기 ]

 

1. 정의

    - Textarea에서 특정 검색단어를 찾아 줌

 

2. 이유

    - nexa14에서 .vscrollbar.set_pos()  bug로 검색단어 위치로 scroll이 잘 안됨

 

3. 소스

   

Posted by 농부지기
,

[ Nexacro.Component  목록얻기 ]

 

1. 정의

    . 화면에 모든 컴포넌트 목록 얻기

 

2. 참고

    . this.components - 를 시작으로 할 경우

                                 - dataset 및 몇 개의 function들이 빠짐

    . this.all                 - 를 시작으로 할 경우

                                 - dataset 및 몇 개의 function들이 추가 됨

 

3. 소스

     

Posted by 농부지기
,

MDB. IF, SWITCH, DECODE

(DB) MDB 2017. 11. 27. 22:14

[ MDB. IF, SWITCH, DECODE ]

 

1. IF문은 IIF 로 명기 됨

    - 예)

  

 

   - IIF문 사용시 연속가능횟수

      IIF (비교문1, TRUE, (IIF(비교문2, TRUE, (IIF ... ) )))

      위와 같이 연속으로 IIF문장은 최대  9번 가능

 

2. SWITCH

    - 예)    

    

 

   - SWITCH 내부 비교연산자 연속가능횟수 최대는 15회 까지 가능

 

3. DECODE

    - DECODE는 별도로 없고 SWITCH 문장으로 가능

Posted by 농부지기
,

[ MDB. 여러개 JOIN하기 ]

 

1. 정의

    - MDB에서 inner join을 여러개 사용하려면 오류가 발생한다.

      아래처럼 () 괄호를 활용해서 하면 가능하다.

 

2. 예제

   

Posted by 농부지기
,

[Nexa.Dataset] 컬럼정보 복사

 

1. 정의

    . A라는 Dataset의 컬럼정보를 B라는 Dataset에 복사하기

 

2. 종류1

    . copyData() 함수를 이용

    . columnInfo라는 속성을 이용하면 속도가 느릴 수 있음.

      그래서 copyData()라는 함수를 이용해서 컬럼정보를 복사

      이때 filter를 이용해서 A.dataset의 레코드는 모두 숨긴 후 copyData()를 수행

    . 단점 : 원본 Dataset에 filter 함수를 사용해야 됨

    . 장점 : 속도가 빠름

 

3. 종류2

    .  getColCount()와 getColumnInfo()함수를 이용해서  컬럼ID 등을 얻은 후

       target Dataset에 addColumn()함수 방식으로 컬럼을 추가 하기

    . 단점 : 속도가 느림

    . 장점 : filter()함수를 사용하지 않음.

 

4. 소스 - copyData()함수 방식   

   

 

5. 소스 - getColumnInfo()함수 방식

'Nexacro-Dataset > Copy' 카테고리의 다른 글

Nexacro.Dataset - copy 기본문법  (1) 2017.06.30
Nexacro Dataset - rowCopy(), rowData() - 복사  (0) 2017.01.22
Posted by 농부지기
,

[ Hot deploy,  DynamicLoading, java,class 자동반영 ]

 

 

1. 정의

    . Tomcat 실행 중 java 소스가 변경 시 Tomcat을 restart하지 않고 java소스가 바로 반영

 

2. 방법

    . springloaded-1.2.8.RELEASE.jar  (2018.08.27일 최신)

       - 파일을 down받은 후 특정 폴더 위치시킴

 

    . Eclipse > Tomcat > double click

      -> Open launch configuration  클릭

      -> [Arguments] Tab

      -> VM arguments에 아래 속성 추가

          -javaagent:c:/GDMiStudio/springloaded-1.2.5.RELEASE.jar -noverify

      -> [OK]

 

      -> [Publishing]

           (o) Automatically publish when reosurce change   를 선택

      -> [저장]

 

      참고] VM arguments 전체 예문

            -Dserver.name=LocalTomcat
            -DinstanceNumber=01
            -Dspring.profiles.active=local
            -XX:+TieredCompilation 
            -XX:TieredStopAtLevel=1
            -Xverify:none
            -javaagent:C:\PJT\server\bin\spring\lib\springloaded-1.2.8.RELEASE.jar
            -noverify

 

3. 추가적용예

    -> VM arguments에 추가 속성 정의

         -Ddynamicloading=verbose;onDemand;inclusions=aaa.bbb.ccc..*,aaa.bbb.ddd..*

 

파라미터 초기값 Description

onDemand

false 요청이 있을 때에만 동작 하도록 할 것인지 여부
(설정이 되어 있으면 Watcher 쓰레드를 기동하지 않음.)
scanInterval 1100 모니터링 주기 (milliseconds)
onDemand 옵션이 true 일 경우 무시됨(0으로 설정)
inclusions 포함시킬 패키지 패턴 명
(설정되어 있지 않으면 모든 패키지를 포함함 – 기본제외패키지는 제외)
exclusions 제외시킬 패키지 패턴 명
verbose false Verbose 모드
explain false 재로딩 실패 시 원인을 로그로 출력할 것인지 여부

 

  

 

Controller/Servlet 설정

remote 환경에서 클래스 dynamic loading 요청을 받기 위해 Controller 또는 Servlet이 필요하다. (둘 중 선택)

Spring Controller

아래와 같이 DynamicLoadingManager와 관련 Controller bean 설정을 추가한다.
여기서 ”/dynamicloading/execute”와 ”/dynamicloading/state”는 관련 요청을 받는 URL이 된다.  

 

 

Servlet

제공되는 서블릿에 @WebServlet 설정이 내장되어 있으므로, Servlet3.0을 지원하는 WAS의 경우 별도의 Servlet 설정이 필요없다.
제공되는 URL은 위 Controller와 동일하다.

 

 

참조 : https://github.com/spring-projects/spring-loaded

Posted by 농부지기
,

[ mdb 암호 확인하기 ]

 

1. mdb 암호를 알아내기

 

2. 첨부파일   accesspv-apxkfwhgdk.zip  를 down받은 후

    압축을 해제하고 [accesspv.exe]파일을 실행

 

3. 그러면 아래와 같은 창이 나온다.

   

 

4. 위 창으로 원하는.mdb 파일을 drag & drop해서 옮겨 놓으면

    창 내부에 암호가 보인다.

Posted by 농부지기
,