Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- androidstudio
- PYTHON
- select문
- form태그
- java
- pl/sql
- DB 스케쥴러
- 파이썬
- sql
- sqlMapClient
- pyqt
- Git
- mybatis
- 비교표현식
- javascript
- ibatis
- error
- JSP
- directivesTag
- fastapi
- Oracle
- eclipse
- anaconda
- pagination
- form
- pymssql
- 드라이브 연결
- sqldeveloper
- sqlMapConfig
- spring
Archives
- Today
- Total
기록하는 코더
[JAVA] ibatis 본문
ibatis
- JAVA에서 DB를 편하게 핸들링할 수 있게 해주는 프레임 워크
- SQL문과 Java소스 코드를 분리하고, 파라미터 값만 같으면 Java소스 코드 변경없이 사용 가능
- ibatis 데이터 매퍼 API를 사용해서 자바빈즈(보통 VO객체) 혹은 Map객체를 PreparedStatement의 파라미터에
매핑해주고 SQL문의 실행결과를 자바빈즈 혹은 Map 객체에 자동으로 매핑해준다.
ibatis를 사용하기 위해서 sqlMapConfig 문서 내에 DB정보를 입력해둬야한다.
사용 전에 설정해둬야할 xml 파일
① SqlMapConfig.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- 이 문서는 iBatis의 환경 설정 내용을 가지고 있는 xml문서
xml은 대소문자를 구분함
설정 순서가 틀어지면 오류가 날 수 있음
-->
<!DOCTYPE sqlMapConfig
PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<!--
DB와 연결하는 정보를 .properties 파일에 저장해 놓고
이 .properties파일의 내용을 읽어올 수 있도록 설정한다.
-->
<properties resource="kr/or/ddit/ibatis/config/dbinfo.properties"/>
<!--
각각의 sqlMap파일의 namespace 속성값과 id 속성값을 연결해서
실행할 SQL문을 선택할 수 있게 한다.
-->
<settings useStatementNamespaces="true"/>
<!--
SQL문에 사용할 VO객체는 패키지 이름을 포함한 전체 이름을 사용해야 한다.
그렇게 되면 문장이 너무 길어질 수 있기 때문에 이 전체 이름을 대신해서 사용할
alias를 설정할 수 있다.
형식) <typeAlias alias="사용할alias명" type="사용할 클래스의 전체이름"/>
-->
<typeAlias alias="lprodVO" type="kr.or.ddit.vo.LprodVO"/>
<!--
DB와의 연결을 처리하는 부분
-->
<transactionManager type="JDBC">
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="${driver}"/>
<property name="JDBC.ConnectionURL" value="${url}"/>
<property name="JDBC.Username" value="${user}"/>
<property name="JDBC.Password" value="${pass}"/>
</dataSource>
</transactionManager>
<!--
실행할 SQL문 등록하기
==> 실행할 SQL문은 xml문서로 따로 만든 후 그 xml문서를 아래와 같이 등록하면 된다.
형식) <sqlMap resource="경로명/파일명.xml"/>
===> 실행할 쿼리문이 어디있는지 알려줌
-->
<sqlMap resource="kr/or/ddit/ibatis/mapper/lprodTest-mapper.xml"/>
</sqlMapConfig>
dbinfo.properties
# 이 properties문서를 작성하는 방법
# 'key값=value값'와 같은 형식으로 작성한다.
driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@localhost:1521:xe
user=DB 접속 아이디
pass=DB 접속 패스워드
② sqlMap (mapper)
<?xml version="1.0" encoding="UTF-8"?>
<!-- 이 문서는 iBatis에서 처리할 SQL문을 작성하는 문서입니다 -->
<!DOCTYPE sqlMap
PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="lprod">
<!--
이 영역에 처리할 SQL문에 맞는 태그를 사용해서 SQL을 작성한다.
사용할 수 있는 기본적인 태그들
<select> 처리할 select문 ~~~</select>
<insert> 처리할 insert문 ~~~</insert>
<delete> 처리할 delete문 ~~~</delete>
<update> 처리할 update문 ~~~</update>
...
-->
<!--
id속성 ==> 실행할 태그를 Java 소스에서 호출할 때 사용되는 이름으로
<sqlMap>태그의 namespace 속성값과 연결해서 사용한다.
(예: 'lprod.insertLprod' )
parameterClass속성 ==> SQL문에 사용될 데이터가 저장된 객체를 기술한다.
(보통 VO클래스, 또는 Java의 자료형이름, Map객체 등이 사용된다.
(VO클래스 등을 기술할 때는 해당 클래스의 전체 이름을 기술하거나 등록된 alias명을 기술한다.)
-->
<!-- 전체 이름 -->
<insert id="insertLprod" parameterClass="kr.or.ddit.vo.LprodVO">
insert into lprod (lprod_id, lprod_gu, lprod_nm)
values #lprod_id#, #lprod_gu#, #lprod_nm#)
<!-- #VO에 있는 변수명# -->
</insert>
</sqlMap>
- xml에 필요없는 정보를 적어둔 경우 오류가 생길 수 있다!
- 쿼리문 내에 변수는 #VO변수명# 컬럼명은 $컬럼명$
- mapper.xml문서에도 typeAlias를 등록할 수 있지만 등록한 Alias를 한번에 관리하는 편이 좋으므로
sqlMapConfig 문서에 모아서 등록한다.
'JAVA > library' 카테고리의 다른 글
[JAVA] Log4j (0) | 2023.01.15 |
---|