## 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 : ... 637 : 638 : 639 : 640 : 641 : 642 : 643 : 644 : 645 : ... 648 : Next »

Recent Posts

  1. HDFS - Python Encoding 오류 처리
  2. HP - Vertica ROS Container 관련 오류...
  3. HDFS - Hive 실행시 System Time 오류
  4. HP - Vertica 사용자 쿼리 이력 테이블...
  5. Client에서 HDFS 환경의 데이터 처리시...

Recent Comments

  1. 안녕하세요^^ 배그핵
  2. 안녕하세요^^ 도움이 되셨다니, 저... sunshiny
  3. 정말 큰 도움이 되었습니다.. 감사합... 사랑은
  4. 네, 안녕하세요. 댓글 남겨 주셔서... sunshiny
  5. 감사합니다 많은 도움 되었습니다!ㅎㅎ 프리시퀸스

Recent Trackbacks

  1. church building construction church building construction %M
  2. wireless clocks transmitter wireless clocks transmitter %M
  3. how to build a metal building how to build a metal building %M
  4. builder builder %M
  5. social media management company social media management company %M

Calendar

«   12 2019   »
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. 오라클 클럽
  4. API - Java
  5. Apache Hadoop API
  6. Apache Software Foundation
  7. HDFS 생태계 솔루션
  8. DNSBL - Spam Database Lookup
  9. Ready System
  10. Solaris Freeware
  11. Linux-Site
  12. 윈디하나의 솔라나라

Site Stats

TOTAL 2781578 HIT
TODAY 1161 HIT
YESTERDAY 1360 HIT