Tiles - 사용 이유

Published on: 2009. 4. 14. 12:05 by louis.dev

필요성
web 환경에섭 반복되는 레이아웃의 처리에 따른 복잡도 증가
-include 를 이용한 재사용은 한계

장점: 페이지의 레이아웃을 쉽게 관리 가능
단점: 파일의 복잡도 증가,접근 난이도 증가

'Framework > Tails' 카테고리의 다른 글

Tiles - 설정 순서  (0) 2009.04.14

iBatis - SqlMapConfig.xml 파일 저장 위치

Published on: 2009. 4. 8. 20:07 by louis.dev

iBatis 의 설정 파일인 SqlMapConfig.xml 이 

WebContent ->WEB-INF - >classes 폴더 밑에 있으면 iBatis가 자동으로 인식하여 로드할때 파일 명만 써주면 자동으로 읽어 온다

EX)

Reader  reader = Resources.getResourceAsReader("SqlMapConfig.xml");
this.sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);
eader.close();

그러나 설정파일이 다른 곳에 있을때는 경로를 풀로 설정해야 한다.


Reader  reader = Resources.getResourceAsReader("../../.............../SqlMapConfig.xml");

(지금 이 코드-reader- 가 들어가 있는 곳으로 부터 SqlMapConfig.xml파일이 있는 위치 까지의 상대 경로


iBatis - FK 일때 맵핑 시키기

Published on: 2009. 4. 8. 09:42 by louis.dev
게시판 맵핑 xml 파일: SqlMapBoard.xml
로그인 맵핑 xml 파일: SqlMapMember.xml



일때 게시판 데이터베이스 테이블에서의 USER_ID는 로그인 데이터베이스 테이블에서의 USER_ID의 FK 라고 한다면

SqlMapBoard에서의 USER_ID는 SqlMapMember의 USER_ID값을 가져와야 한다.

<SqlMapBoard.xml>

<?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 namespace="kr.co.bit.board.dao.iBatis.Board">                                  <!-- namespace 설정 -->
<typeAlias alias="board" type="kr.co.bit.board.model.Board"/>

  <resultMap class="board" id="boardResult">
    <result column="SEQ" property="seq" />
    <result column="USER_ID"  property="member"  select="kr.co.bit.member.dao.iBatis.Member.selectMemberByUserId"/>
     <!-- kr.co.bit.member.dao.iBatis.Member 는 참조하려는  (SqlMapMember.xml) 의 네임스페이스고 그 네임스페이스의
           selectMemberByUserId라는 선언된 sql을 사용하여 member table에 있는 USER_ID를 가져와서 member(property="member")
           에 저장한다.     
select 문에서 USER_ID,USER_PW,EMAIL,USER_NAME 을 가져와서 member에 저장 하게 된다. 그래서 member.get~으로 데이터를 가져올수 있다.
      -->
    <result column="TITLE"  property="title" />
    <result column="CONTENTS"  property="contents" />
    <result column="REGIST_DATE" property="registDate" />
    <result column="READ_COUNT" property="readCount" />
  </resultMap>
 
  <resultMap class="board" id="boardAttachfileResult">
    <result column="SEQ" jdbcType="DECIMAL" property="seq" />
    <result column="USER_ID"  property="member"  select="kr.co.bit.member.dao.iBatis.Member.selectMemberByUserId"/>
    <result column="TITLE" jdbcType="VARCHAR" property="title" />
    <result column="CONTENTS" jdbcType="VARCHAR" property="contents" />
    <result column="REGIST_DATE" jdbcType="DATE" property="registDate" />
    <result column="READ_COUNT" jdbcType="DECIMAL" property="readCount" />
    <result column="SEQ" jdbcType="DECIMAL" property="attachfileList"  select="kr.co.bit.board.dao.iBatis.Board.selectListByBoardSeq"/>
   
  </resultMap>

  <select id="selectListCount" parameterClass="board" resultClass="int">
      select
          count(0)
      from
          TB_MEMBER_BOARD
  </select>
 
  <select id="selectBoard" parameterClass="int" resultMap="boardResult">
      select
          SEQ, USER_ID, TITLE, CONTENTS, REGIST_DATE, READ_COUNT
      from
          TB_MEMBER_BOARD
      where
          SEQ = #paramSeq#
  </select>
 
  <statement id="selectList" parameterClass="board" resultMap="boardResult">
        <![CDATA[
        select
            SEQ, USER_ID, TITLE, CONTENTS, REGIST_DATE, READ_COUNT
        from
            (
            select *
            from
                ( select * from TB_MEMBER_BOARD order by SEQ ASC )
            where rownum <= #startRow#
            order by SEQ desc
            )
        where rownum <= #countPerPage#
        ]]>
  </statement>
 
  <update id="selectBoardCount" parameterClass="int">
      update
          TB_MEMBER_BOARD
      set
          READ_COUNT = READ_COUNT + 1 where SEQ = #seq#
  </update>
 
  <insert id="insert" parameterClass="board">
      <selectKey keyProperty="seq" resultClass="long">
          select SEQ_TB_MEMBER_BOARD.NEXTVAL from DUAL;
      </selectKey>
      insert into TB_MEMBER_BOARD
          (SEQ, TITLE, CONTENTS, USER_ID, READ_COUNT, REGIST_DATE)
      values
          (#seq#, #title#, #contents#, #member.userId#, 0, sysdate)
  </insert>
 
</sqlMap>


<SqlMapMember.xml>
<?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 namespace="kr.co.bit.member.dao.iBatis.Member" > 
<!-- namespace 위에서 이 이름으로 접근하여 selectMemberByUserId 으로 sql문에 접근한다-->

  <typeAlias alias="member" type="kr.co.bit.member.model.Member"/>
   
  <resultMap id="memberResult" class="member" >
    <result column="USER_ID" property="userId" />
    <result column="USER_PW" property="userPw"/>
    <result column="USER_NAME" property="userName" />
    <result column="EMAIL" property="email"/>
   <!--   <result column="REGIST_DATE" property="registDate" jdbcType="DATE" />-->
  </resultMap>
 
     <select id="selectMemberByUserId" parameterClass="String" resultMap="memberResult">
         select
             USER_ID, USER_PW, USER_NAME, EMAIL
         from
             MEMBER_BOARD
         where
             USER_ID = #userId#
     </select>
 
     <insert id="insertMember" parameterClass="member">
         insert into MEMBER_BOARD
             (USER_ID, USER_PW, USER_NAME, EMAIL, REGIST_DATE)
         values
             (#userId#, #userPw#, #userName#, #email#, sysdate)
     </insert>
    
</sqlMap>

iBatis - 라이브러리 추가 하기

Published on: 2009. 4. 3. 14:34 by louis.dev
http://ibatis.apache.org/javadownloads.cgi
에서 다운로드

파일::

ibatis-2.3.4.726.jar

iBatis - ibator 사용해서 설정파일&Dao 자동 생성하기

Published on: 2009. 4. 2. 10:31 by louis.dev

1.ibator 플러그인 다운로드 후 설치
ibator 플러그인 홈페이지:http://ibatis.apache.org/ibator.html
ibator 플러그인 설치 주소: http://ibatis.apache.org/tools/ibator

2.자바 일반 프로젝트 생성 - 생성된 프로젝트 오른쪽 마우스 - new - other - apache iBatis ibator - configurationFile - next - finish

3.ibatorConfig.xml 파일 생성

<!--ibatorConfig.xml 내용-->
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ibatorConfiguration PUBLIC "-//Apache Software Foundation//DTD Apache iBATIS Ibator Configuration 1.0//EN" "http://ibatis.apache.org/dtd/ibator-config_1_0.dtd" >
<ibatorConfiguration >
  <classPathEntry location="C:\ojdbc14.jar" /><!-- 실제 드라이버가 있는 주소 -->
  <ibatorContext id="context1" >
    <jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver" connectionURL="jdbc:oracle:thin:@127.0.0.1:1521:XE" userId="scott" password="tiger" />      <!-- 실제적으로 들어가는 데이터 설정 -->
    <javaModelGenerator targetPackage="kr.co.bit.lecture.board.model" targetProject="iBator" /> <!--  어떤 프로젝트의 어떤 패키지로 생성되어 들어갈것인가-->
    <sqlMapGenerator targetPackage="kr.co.bit.lecture.board.dao.ibatis.maps" targetProject="iBator" /> <!--매핑파일 생성 위치지정 -->
    <daoGenerator targetPackage="kr.co.bit.lecture.board.dao.ibatis.maps" targetProject="iBator" type="GENERIC-CI" /> <!-- boardDaoiBatis만들기 -->
    <table schema="scott" tableName="TB_BOARD" domainObjectName="Board"><!-- 스키마 생성 (domainObjectName추가 옵션)-->
   
     <!--  <columnOverride column="???" property="???" />삭제해도 됨 -->
    </table>
  </ibatorContext>
</ibatorConfiguration>

::만약 패키지가 많으면(패키지를 나누면 Board라는 패키지 말고 다른곳에 저장하고 싶으면) <ibatorContext></ibatorContext>까지 여러개를 만들면 됨

4.ibatorConfig.xml 설정후
ibatorConfig.xml- 오른쪽 단추 - 제너레이트~~- 자동으로 src폴더에 자동 생성