## Oracle - 테스트 테이블 생성, 데이타 삽입
SQL 파일 내용

CREATE SEQUENCE memo_T_seq
increment by 1
start with 1
nomaxvalue
nocycle
cache 10;

CREATE SEQUENCE comment_T_seq
increment by 1
start with 1
nomaxvalue
nocycle
cache 10;

CREATE TABLE memo_T(
 idx NUMBER,
 subject VARCHAR2(50),
 name VARCHAR2(20),
 email VARCHAR2(50),
 w_day date,
 memo VARCHAR2(4000),
 CONSTRAINT memo_T PRIMARY KEY(idx)
);

CREATE TABLE comment_T(
 idx NUMBER,
 memo_idx NUMBER CONSTRAINT comment_fk REFERENCES memo_T (idx),
 name VARCHAR2(20),
 email VARCHAR2(50),
 w_day date,
 comm VARCHAR2(4000)
);

INSERT INTO memo_T VALUES(memo_T_seq.NEXTVAL,'test1','마루치','aaa@hanbiteni.co.kr','2008-11-18','테스트입니다.');
INSERT INTO memo_T VALUES(memo_T_seq.NEXTVAL,'내가 누구게~~?','아라치','bbb@hanbiteni.co.kr','2008-11-19','마루치 못 봤어요?.');
INSERT INTO memo_T VALUES(memo_T_seq.NEXTVAL,'세번째 테스트','파토나슈','papa@hanbiteni.co.kr','2008-11-19','파토나슈~~.');

INSERT INTO comment_T VALUES(comment_T_seq.NEXTVAL,2,'마루치','aaa@hanbiteni.co.kr','2008-11-18','몰라~! 알 수가 없어!!');
INSERT INTO comment_T VALUES(comment_T_seq.NEXTVAL,2,'파토나슈','papa@hanbiteni.co.kr','2008-11-19','파토! 깽판!');
INSERT INTO comment_T VALUES(comment_T_seq.NEXTVAL,1,'파토나슈','papa@hanbiteni.co.kr','2008-11-19','시워~ 시워^^');

Memo.java - POJO 객체

package memo.vo;

import java.util.List;

public class Memo {
    private int idx;
    private String subject, name, email, w_day, memo;
    private List<Comment> comments;
   
    public List<Comment> getComments() {
        return comments;
    }
    public void setComments(List<Comment> comments) {
        this.comments = comments;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public int getIdx() {
        return idx;
    }
    public void setIdx(int idx) {
        this.idx = idx;
    }
    public String getMemo() {
        return memo;
    }
    public void setMemo(String memo) {
        this.memo = memo;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSubject() {
        return subject;
    }
    public void setSubject(String subject) {
        this.subject = subject;
    }
    public String getW_day() {
        return w_day;
    }
    public void setW_day(String w_day) {
        this.w_day = w_day;
    }
}

Comment.java - POJO 객체

package memo.vo;

public class Comment {
    private int idx, memo_idx;
    private String c_name, c_email, c_w_day, comm;

    public String getC_email() {
        return c_email;
    }
    public void setC_email(String c_email) {
        this.c_email = c_email;
    }
    public String getC_name() {
        return c_name;
    }
    public void setC_name(String c_name) {
        this.c_name = c_name;
    }
    public String getC_w_day() {
        return c_w_day;
    }
    public void setC_w_day(String c_w_day) {
        this.c_w_day = c_w_day;
    }
    public String getComm() {
        return comm;
    }
    public void setComm(String comm) {
        this.comm = comm;
    }
    public int getIdx() {
        return idx;
    }
    public void setIdx(int idx) {
        this.idx = idx;
    }
    public int getMemo_idx() {
        return memo_idx;
    }
    public void setMemo_idx(int memo_idx) {
        this.memo_idx = memo_idx;
    }
}


sqlMapConfig.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE sqlMapConfig PUBLIC '-//ibatis.apache.org//DTD SQL Map Config 2.0//EN' 'http://ibatis.apache.org/dtd/sql-map-config-2.dtd'>
<sqlMapConfig>
    <transactionManager type="JDBC" commitRequired="false">
        <dataSource type="SIMPLE">
            <property name="JDBC.Driver" value="oracle.jdbc.driver.OracleDriver"/>
            <property name="JDBC.ConnectionURL" value="jdbc:oracle:thin:@203.236.209.201:1521:orcl"/>
            <property name="JDBC.Username" value="scott"/>
            <property name="JDBC.Password" value="tiger"/>
        </dataSource>
    </transactionManager>
    <sqlMap resource="config/Memo.xml"/>
</sqlMapConfig>


Memo.xml(sqlMap)

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE sqlMap PUBLIC '-//ibatis.apache.org//DTD SQL Map 2.0//EN' 'http://ibatis.apache.org/dtd/sql-map-2.dtd'>
<sqlMap>
    <typeAlias alias="memo" type="memo.vo.Memo"/>
    <typeAlias alias="comment" type="memo.vo.Comment"/>

    <resultMap id="getComm" class="comment">
        <result property="idx" column="idx"/>
        <result property="memo_idx" column="memo_idx"/>
        <result property="c_name" column="name"/>
        <result property="c_email" column="email"/>
        <result property="c_w_day" column="w_day"/>
        <result property="comm" column="comm"/>
    </resultMap>
<!--
memo 클래스의 resultMap 를 만든다.
getMemo_comm 을 하지 않고
Comment.java 에는 getMemo에서 다 선언하지 않은 List 타입의 comments 컬럼이 있다.
-->
    <resultMap id="getMemo" class="memo">
        <result property="idx" column="idx"/>
        <result property="subject" column="subject"/>
        <result property="name" column="name"/>
        <result property="email" column="email"/>
        <result property="w_day" column="w_day"/>
        <result property="memo" column="memo"/>
    </resultMap>
<!--
getMemo_comm의 이름을 가진 resultMap 에서는 위의 getMemo 를 상속받는다.
자바에서와 같이 상속을 받아서 getMemo의 result로 선언한 컬럼을 모두 포함한다.
아래 getMemo_comm에서는 List 타입의 comments를 오버라이딩 하였다.
-->
    <resultMap id="getMemo_comm" class="memo" extends="getMemo">
        <result property="comments" select="getCommList" column="{memo_idx=idx}"/>
    </resultMap>

<!-- Comment -->
    <select id="getCommList" resultMap="getComm" parameterClass="comment">
        SELECT * FROM comment_T
        WHERE memo_idx = #memo_idx#
        ORDER BY memo_idx DESC
    </select>
<!-- Memo -->
    <select id="getMemoList" resultMap="getMemo_comm">
        SELECT * FROM memo_T
        ORDER BY idx DESC
    </select>
    </sqlMap>


MemoClient.java

package memo.client;

import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
import java.io.IOException;
import java.io.Reader;
import java.sql.SQLException;
import java.util.List;
import memo.vo.Comment;
import memo.vo.Memo;

public class MemoClient {
    public static void main(String[] arr)throws IOException, SQLException{
        Reader reader = Resources.getResourceAsReader("sqlMapConfig.xml");

        SqlMapClient map = SqlMapClientBuilder.buildSqlMapClient(reader);
        reader.close();

        List<Memo> list = map.queryForList("getMemoList");

        // Memo 타입의  m
        for(Memo m : list)
        {
            // 메인 글의 번호, 제목, 코멘트 개수가 출력되고
            System.out.println(m.getIdx()+" - "+m.getSubject()+"("+m.getComments().size()+")");
            for(Comment c : m.getComments())
            {   // 코멘트의 내용, 글쓴이 이름 이 출력된다.
                System.out.println(" -->"+c.getComm()+"("+c.getC_name()+")");
            }
        }
    }
}

11 20, 2008 01:29 11 20, 2008 01:29

Trackback URL : http://develop.sunshiny.co.kr/trackback/12

Leave a comment

« Previous : 1 : ... 369 : 370 : 371 : 372 : 373 : 374 : 375 : 376 : 377 : ... 381 : Next »

Recent Posts

  1. Oracle - 바인드 변수에 대하여(테스트)
  2. Oracle - 디폴트 롤, DBA, CONNECT,...
  3. Oracle - 권한 및 롤 관리
  4. Oracle - SQL*PLUS의 SYSDBA 접근 제어
  5. Oracle - PFILE, SPFILE 에 관하여

Recent Comments

  1. 네 답글 고맙습니다. 좋은 한주 보... sunshiny 05 14,
  2. 좋은 정보 잘 살펴보고 갑니다. ememoho 05 12,
  3. 네. 고맙습니다^^ 행복한 한해 보... sunshiny 01 16,
  4. sunshiny님. 안녕하세요... 올려 주... yihans 01 16,
  5. 답글 주셔서 고맙습니다^^ 소스 복... sunshiny 01 11,

Recent Trackbacks

  1. 윈도우 cmd 명령어 팁 월풍도원(月風道院) - Delight on th... %M
  2. 파일 압축 Like RadioHead %M
  3. Mysql - mysql 설치후 Character set... 멀고 가까움이 다르기 때문 %M

Calendar

«   05 2012   »
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

Bookmarks

  1. 위키피디아
  2. MysqlKorea
  3. Oracle All Documentation
  4. 엑셈
  5. 오라클 클럽
  6. 네이버개발자센터
  7. API - Java
  8. API - Spring
  9. Java Community
  10. Reference - Spring
  11. 스프링사용자
  12. 자바소스
  13. 자바지기
  14. Ready System
  15. Solaris Freeware
  16. Linux-Site
  17. RedHat Korea
  18. 윈디하나의 솔라나라

Site Stats

TOTAL 245406 HIT
TODAY 112 HIT
YESTERDAY 139 HIT