-
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;
반응형'program_language 및 궁금한것 > Java' 카테고리의 다른 글
[Java] 마이바티스(Mybatis) 란? 그리고 사용방법 (0) 2019.08.31 [JAVA] IO 입출력 객체 사용법 (아주중요) (0) 2019.07.29 [JAVA] POJO란? (0) 2019.06.18 [자바] throws (0) 2019.05.21 [자바] throw와 throws의 차이점 (0) 2019.05.21