728x90
반응형

iBatis를 사용해서 쿼리작업을 하면 아래와같은 장점이 있다.

      1. xml로 sql을 관리하므로 가독성이 높아진다.

      2. db연결 정보도 conf로 관리하므로 수정하기 쉬워지며

      3. 그래서 코드내에서 여러개의 db에 선택적으로 접근하기도 수월하다.(테스트/실장비 자유롭게 왔다갔다~)

      4.ORMap을 해주기때문에 결과를 가져올때도 사용하기가 쉽다.

 

xml의 statement 내에서 변수들을 받을때 '#' 를 사용해서 변수를 접근한다.

그러나 테이블명/필드명들을 접근할때는 '$' 를 사용한다.

      select * from $tablename$

이런식으로..

 

 

그런데, 여기서 테이블명이 바뀌면 읽어오는 필드명도 보통은 달라지게마련..

iBatis는 내부적으로 읽어온 결과의 metadata를 저장해두는데

읽어온 필드명이 달라지면 이전의 metadata와 mapping이 되지않아 에러를 발생시킨다.

 

이럴때 statement의 attribute로 "remapResults=true"를 추가해줘야 한다.

이렇게 되면 매번 metadata를 세팅하므로 사실은 오버헤드가 있지만 에러는 발생하지 않는다.

 

문서들을 찾아보면 이 오버헤드 때문에 꼭 필요한 경우가 아니면 이 attribute를 활성화하지 말라고 되어있는데

실제로 아래 두가지 경우를 테스트 했을때 속도차는 별로 없었다.

1. remapResults=true로 하고 두개의 테이블에 번갈아가면서 접근한것

2. 각각의 테이블로 가는 sql을 따로 두개 작성한후에 remapResults=false로 해놓고 번갈아가면서 접근한것

728x90
반응형

'Web Programming > java-jsp' 카테고리의 다른 글

project.build.sourceencoding  (0) 2013.09.16
ibatis <dynamic>,<prepend>  (0) 2013.09.13
Ibatis 동적쿼리  (0) 2013.09.12
HashMap<k,v>  (0) 2013.09.12
리눅스 명령어  (0) 2013.09.11
728x90
반응형

<!-- 모든 리스트 불러오기, 페이징구현-->
 <select id="getAllBoard" resultClass="Board_Content" parameterClass="HashMap">
  SELECT
   CONTENT_NO,
   CONTENT_TITLE,
   CONTENT_DATE,
   CONTENT_WRITER,
   CONTENT_PW,
   CONTENT_CONTENT
  FROM(
   SELECT
    ROWNUM AS RNUM,
    CONTENT_NO,
    CONTENT_TITLE,
    CONTENT_DATE,
    CONTENT_WRITER,
    CONTENT_PW,
    CONTENT_CONTENT
   FROM(
    SELECT
     CONTENT_NO,
     CONTENT_TITLE,
     CONTENT_DATE,
     CONTENT_WRITER,
     CONTENT_PW,
     CONTENT_CONTENT
    FROM
     BOARD_CONTENT
    <!--paramMap.put("endRow", endRow);
     paramMap.put("startRow", startRow);
     paramMap.put("board_search", board_search);
     paramMap.put("word", word);
     *board_search : title,writer,content
     
     *ibatis 동적쿼리*
     <dynamic> prepend에 조건절sql
     null이 아니면,,<isNotNull> property에 들어갈 내용..
     like..<isEqual> property에 조건 걸 인자로 들어온 객체 compareValue에 조건걸 인자의 조건걸 변수
     LIKE '%' + #들어갈내용# + '%' -->
    <dynamic prepend="WHERE">
     <isNotNull property="word">
      <isEqual property="board_search" compareValue="title">
       CONTENT_TITLE LIKE '%' + #word# + '%'
      </isEqual>
      <isEqual property="board_search" compareValue="writer">
       CONTENT_WRITER LIKE '%' + #word# + '%'
      </isEqual>
      <isEqual property="board_search" compareValue="content">
       CONTENT_CONTENT LIKE '%' + #word# + '%'
      </isEqual>
     </isNotNull>
    </dynamic>
    ORDER BY
     CONTENT_NO DESC))
  WHERE
   RNUM &gt;= #startRow# AND RNUM &lt;= #endRow#
  <!-- rnum >= startRow(1,11,21,,) and rnum <= endRow(10,20,30,,) --> 
  <!-- xml에서 "< >"를 사용하려면 <![CDATA[<]]>"이나  "&lt;", "&gt" 로 사용해야 한다. -->
 </select>

728x90
반응형

'Web Programming > java-jsp' 카테고리의 다른 글

ibatis <dynamic>,<prepend>  (0) 2013.09.13
remapResults="true"  (0) 2013.09.12
HashMap<k,v>  (0) 2013.09.12
리눅스 명령어  (0) 2013.09.11
UNIX vi명령어  (0) 2013.09.11
728x90
반응형

HashMap이란

Map인터페이스의 한종류로써 Key와 Value 값으로 데이터를 저장하는 형태를 하고 있다.

여기서 Map인터페이스라는 것은 Key와 Value 값으로 저장하는 List 형태의 조상!

HashMap또한 Map인터페이스를 구현한 클래스이기 때문에 Map의 속성을 모두 가지고 있고, 저장 방식 또한 동일 하다. 그리고 해싱(hashing)이란 검색 방법을 사용하기 때문에 많은 양의 데이터를 검색하는데 있어서 뛰어난 성능을 보여준다.

 

HashMap 주요 메서드

HashMap() - HashMap객체를 생성

EX) HashMap map = new HashMap();

 

HashMap(int initialCapacity) - 지정된 값을 초기용량으로 하는 HashMap객체를 생성

EX) HashMap map = new HashMap(10);

 

Object put(Object key, Object value) - 지정된 키와 값을 HashMap에 저장

EX) HashMap map = new HashMap();

      map.put("토끼", "100");

 

Object get(Object key) - 지정된 키(key)의 값(객체)을 반환

EX) HashMap map = new HashMap();

      map.put("토끼", "100");

      map.get("토끼");    --->  100 반환

 

HashMap(Map m) - 주어진 Map에 저장된 모든 요소를 포함하는 HashMap객체를 생성

EX) HashMap map = new HashMap();

      map.put("토끼", "100");

      map.put("거북이", "20");

      HashMap map2 = new HashMap(map)

      map2.get("토끼");    --->  100 반환

 

void clear() - HashMap에 저장된 모든 객체를 제거한다.

EX) HashMap map = new HashMap();

      map.put("토끼", "100");

      map.put("거북이", "20");

      map.clear();

      map.get("토끼");    --->  NULL 반환

 

Set keySet() - HashMap에 저장된 모든 키가 저장된 Set을 반환한다.

EX) HashMap map = new HashMap();

      map.put("토끼", "100");

      map.put("거북이", "20");

      Set allkey = map.keySet();    --->  allkey = {"토끼", "거북이"}

 

 

 

아래와 같이 Key중복이 일어 날 경우...

EX) map.put("호랑이" , "힘90")
      map.put("여우" , "힘90")
      map.put("호랑이" , "힘80")    --->  "호랑이" 라는 키가 중복되었다.
      (최종 호랑이 key에 저장된 value는 "힘80"으로 나중에 입력된 key의 value로 덮어 씌어 집니다. value 값은 중복가능)

        호랑이      여우

        힘80        힘90

728x90
반응형

'Web Programming > java-jsp' 카테고리의 다른 글

remapResults="true"  (0) 2013.09.12
Ibatis 동적쿼리  (0) 2013.09.12
리눅스 명령어  (0) 2013.09.11
UNIX vi명령어  (0) 2013.09.11
스프링에서 로그 찍기 slf4j  (0) 2013.09.11
728x90
반응형
java.sql.SQLSyntaxErrorException: ORA-01722: 수치가 부적합합니다

이거 정신놓고 코딩하다 보면 가끔 뜸..

 

테이블의 컬럼타입과 입력타입이 달라서 뜨는 오류

 

서로 타입일치 시켜야함!

728x90
반응형
728x90
반응형

date 날짜와 시간을 설정 및 확인

time 실행한 명령어가 수행되는 시간

which 명령어의 위치 출력

help 도움말 출력

cal 달력을 출력

exit 현재 실행중인 쉘 종료

man 해당 명령어의 매뉴얼을 출력

history 사용한 명령어 목록 출력

useradd 계정 생성

userdel 삭제 

usermod 정보 수정

passwd 암호 변경

ls 목록 출력

chown 소요권 변경

chgrp 소유 그룹 변경 

cat 내용 출력

file 파일 종류 표시

ps 실행중인 프로세스 정보

more 텍스트 파일을 한 화면으로 나눠 출력

touch 파일 수정 시간 변경 및 빈 파일 생성

grep 정규표현형식을 이용한 파일내 문자열 검색

df 하드 디시크 사용량 표시

find 검색

chmod 허용권한 변경

cp 복사

mv 이동

rm 삭제 

cd 디렉터리 이동

pwd 절대경로 표시 

mkdir 디렉터리 생성

du 디렉터리 사용량 표시

who, w, users 접속하고있는 사용자 확인

who am i 로그인 사용자 확인

netstat 네트워크 상태 정보 출력

finger 특정 사용자의 정보를 출력

talk 특정 사용자와 채팅

wall 접속하고 있는 사람들에게 메시지 전송

ping 상대 컴퓨터와 통신 가능 여부 확인

nslookup 네임 서버 조회

ifconfig 네트워크 인터페이스의 확인 및 설정

traceroute 상대 서버까지 경로 출력

clear 화면 지움

728x90
반응형

'Web Programming > java-jsp' 카테고리의 다른 글

Ibatis 동적쿼리  (0) 2013.09.12
HashMap<k,v>  (0) 2013.09.12
UNIX vi명령어  (0) 2013.09.11
스프링에서 로그 찍기 slf4j  (0) 2013.09.11
ibatis 설정  (0) 2013.09.11

+ Recent posts