ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ibatis란?
    program_language 및 궁금한것/Java 2019. 7. 1. 20:14

    ibatis란? 개발자의 작명센스란..? 

    아이바티스는 프레임워크다. sql문 작성시 필요한 JDBC코드를 생성해 준다.

     

    실무에서 많이 사용하는데 db연동시 conn과 close등 중복되는 코드를 간추려 준다.

    conn, disconn, get, set 다 대신해줄게.

    내가 반복작업을 대신 해줄테니 넌 sql문에나 신경 쓰시오. 

    ...ibatis왈... ㅎㅎ

     

    자바 클래스 vo클래스의 변수명과 db의 컬럼명이 같으면 자동 매핑이 된다.

    #id <-- rs.getInt한 값을 person의 setId로 해준다. getSet을 한번에

     

    window- 설정 - xml catalog - workspace - XMLTest/dtd/sql-map-config-2.dtd추가

    key입력 -  -//iBATIS.com//DTD SQL Map Config 2.0//EN

    web adress입력 - http://www.ibatis.com/dtd/sql-map-config-2.dtd

     

    <sqlMapConfig.xml> ibatis환경설정XML
    
    Location입력==> http://www.ibatis.com/dtd/sql-map-config-2.dtd
                ==> G:\jaelee\driver\dtd\sql-map-config-2.dtd
    Key입력==> -//iBATIS.com//DTD SQL Map Config 2.0//EN
    Alternative web addres==> http://www.ibatis.com/dtd/sql-map-config-2.dtd
    
    ======================================================================
     
    <person.xml> sql매핑XML
    
    Location입력==> http://www.ibatis.com/dtd/sql-map-2.dtd
                ==> G:\jaelee\driver\dtd\sql-map-2.dtd
    Key입력==> -//iBATIS.com//DTD SQL Map 2.0//EN
    Alternative web addres==> http://www.ibatis.com/dtd/sql-map-2.dtd

     

    예시
    <sqlMap>
    	<insert id="insert">
        --> 만약 DAO클래스와 매핑을 한다면 id속성값에는 메소드명과 일치시키는게 좋다.
        --> id명은 중복 불가
        	insert into 테이블명
        </insert>
        
        <delete id="delete">
        	delete from 테이블명
        </delete>
        
        <update id="modify">
        	update 테이블명 seet
        </update>
        
        --> select 에서는 resultClass를 반드시 정의해야 한다.
        --> 정의를 안하면 select문 결과가 null이 나온다.
        <select id="find" parameterClass="자료형" resultClass="자료형">
        	select * from 테이블명 where no=?
        </select>
    </sqlMap>
      

    작업순서. (세미콜론 사용금지)

    1. 위의 sqlmap을 작성한다.

    2 호출(자바코드 안에서)

      SqlMapClient smc;

      ex.  <select>태그 :  smc.select(id);

       결과행의 갯수에 따라 smc.queryForObject(id); // 조회결과가 한

                                    smc.queryForList(id) // 조회결과가 최소 두개

      smc.매개변수명( 아이디 );

      smc.매개변수명( 아이디, 전달데이터 ); // 전달데이터는 parameterClass에 전달한다.

      resultClass - 조회결과를 담는 클래스( Map, vo)

      

    3. <select id='search' parameterClass="int" resultset = "String" >

            select ename from emp where empno=#empno#  // #은 파라메터다.

            String ename = (String)smc.queryForobject('search', 7788);

     

    호출사례!)

    1. 

    <select id='search' parameterClass="com.encore.EmpVO" resultset = "String" >
    
            select ename from emp where salary>#sal# and deptno=#deptno#  // #은 파라메터다.
    
    </select>
    
    // 자바에서
        EmpVO vo= new EmpVO();
        vo.setSal(2000)
        vo.setDeptno(20)
        smc.queryForList('seearch', vo);
    List<String> list = (String)smc.queryForList('search', 7788);

    drop table empClone;

    create table empClone as select empno, ename, sal, deptno from emp;

    drop table deptClone;

    create table deptClone as select * from dept;

     

    반응형

    댓글

Designed by Tistory.