티스토리 뷰
Springi Batis 7-2 SqlMap 설정
SqlMapConfig.xml 파일 설정
데이터베이스 접속에서부터 실제 사용할 SQL Map 들까지 모든 정보들을 프레임워크에 제공하는 SQL Map Config 파일 설정
<settings>
lazyLoadingEnabled : 늦은 로딩(데이터 사용시 select)을 사용할지 여부(기본값: true)
cacheModelsEnabled : 캐시를 사용할지 여부(기본값 : true)
enhancementEnabled : 런타임시 늦은 로딩 기능 향상 여부(CGLIB 필요) (기본값: true)
useStatementNamespace : sql 호출시 namespace 사용 여부 (기본값: false)
maxRequests : 한꺼번에 SQL문을 수행할 수 있는 쓰레드의 수 (기본값 : 512)
maxSessions : 주어진 시간동안 활성화될 수 있는 세션의 수(기본값 : 128)
maxTransactions : 한꺼번에 SqlMapClient.startTransaction()에 들어갈 수 있는 쓰레드의 최대 개수 (기본값 : 32)
<properties>
Resource : 클래스패스 상에 있는 리소스 (혹은 파일)
url : Uniform Resource Locator (URL)
<typeAlias>
alias : 클래스의 별칭을 정의
type : 실제 클래스의 완전한 이름
기본적으로 내장된 몇몇 typeAlias 값
JDBC : com.ibatis.sqlmap.engine.transaction.jdbc.JdbcTransactionConfig
JTA : com.ibatis.sqlmap.engine.transaction.jta.JtaTransactionConfig
EXTERNAL : com.ibatis.sqlmap.engine.transaction.external.ExternalTransactionConfig
SIMPLE : com.ibatis.sqlmap.engine.datasource.SimpleDataSourceFactory
DBCP : com.ibatis.sqlmap.engine.datasource.DbcpDataSourceFactory
JNDI : com.ibatis.sqlmap.engine.datasource.JndiDataSourceFactory
string : java.lang.String
int/integer : java.lang.Integer
object : java.lang.Object
map : java.util.Map
hashmap : java.util.HashMap
list : java.util.List
arraylist : java.util.ArrayList
<transactionManager>
type : 사용할 트랜잭션 관리자를 표시
<dataSource> : 사용할 데이터소스 팩토리 지정
Spring JDBC에서의 Transaction Manager 와 동일
<sqlMap>
resource : 클래스패스에 있는 SQL Map 파일
url : Uniform Resource Locator (URL)
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>
<properties resource="sqlMapConfig.properties" />
<settings
cacheModelsEnabled="true" enhancementEnabled="true"
lazyLoadingEnabled="true" maxRequests="32"
maxSessions="10" maxTransactions="5"
useStatementNamespaces="false" />
<typeAlias type="com.sds.hr.vo.Country" alias="country" />
<transactionManager type="JDBC" >
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="${driver}"/>
<property name="JDBC.ConnectionURL" value="${url}"/>
<property name="JDBC.Username" value="${username}"/>
<property name="JDBC.Password" value="${password}"/>
</dataSource>
</transactionManager>
<sqlMap resource="com/multicampus/biz/user/user-mapping.xml" />
</sqlMapConfig>
Mapped Statements
statement, select, insert, update, delete, procedure
statement는 자주 사용되지 않음.
엘리먼트
|
속성
|
자식 요소
|
메소드
|
<select>
|
id
parameterClass
resultClass
parameterMap
resultMap
cacheModel
|
모든 동적인 요소
|
모든 데이터 조회
|
<insert>
|
id
parameterClass
parameterMap
|
모든 동적인 요소
<selectKey>
|
데이터 입력
|
<update>
|
id
parameterClass
parameterMap
|
모든 동적인 요소
|
데이터 수정
|
<delete>
|
id
parameterClass
parameterMap
|
모든 동적인 요소
|
데이터 삭제
|
Mapped Statements 사용하기
<select /> 요소
데이터를 조회하는 기본적인 구문을 작성할 때 사용. select 구문 사용
<sqlMap>
<select id="getUser" parameterClass="string"
resultClass="com.multicampus.biz.vo.UserVO" >
SELECT ID, PASSWORD, NAME, ROLE
FROM USERS WHERE ID=#id#
</select>
</sqlMap>
<insert /> 요소
insert sql 구문 사용. <selectKey /> 요소를 포함할 수 있음.
<sqlMap>
<insert id="addBoard" parameterClass="com.multicampus.biz.vo.BoardVO">
<selectKey keyProperty="seq" resultClass="int">
SELECT BOARD_SEQ.NEXTVAL AS SEQ FROM DUAL
</selectKey>
INSERT INTO BOARD(SEQ, TITLE, WRITER, CONTENT)
VALUES (#seq#, #title#, #writer#, #content#)
</insert>
</sqlMap>
<update />, <delete /> 요소
<sqlMap>
<update id="updateUser">
UPDATE BOARD SET TITLE=#title#, CONTENT=#content#
WHERE SEQ=#seq#
</update>
<delete id="deleteUser">
DELETE BOARD
WHERE SEQ=#seq#
</delete>
</sqlMap>
Mapped Statements 속성
id 속성
매핑 파일을 검색하기 위한 key값. Unique해야 함.
parameterClass 속성
자바클래스의 전체 경로를 포함한 이름을 지정함.
여러 개의 데이터를 전달하기 위해 VO 객체를 사용할 때 지정함.
이름이 너무 긴 경우 <typeAlias /> 엘리컨트를 이용해 별칭을 사용할 수 있음
VO 객체의 각 속성을 파라미터로 전달
파라미터의 명시적 지정을 위해 해쉬 사용 : #property#
<typeAlias alias="user" type="com.multicampus.biz.user.vo.UserVO"/>
<insert id="insertUser" parameterClass="user">
INSERT INTO USERS(ID, PASSWORD, NAMD, ROLE)
VALUES(#id#, #password#, #name#, #role#)
</insert>
parameterMap 속성
parameter의 속성 순서를 지정하고 SQL 문에서는 해쉬 대신에 ?를 사용할 수있음.
<sqlMap>
<parameterMap id="userParaMap" class="com.multicampus.biz.vo.UserVO">
<parameter property="id" />
<parameter property="password" />
<parameter property="name" />
<parameter property="role" />
</parameterMap>
<insert id="insertUserUseParaMap" parameterMap="userParaMap">
INSERT INTO USERS(ID, PASSWORD, NAME, ROLE)
VALUES (?, ?, ?, ?)
</insert>
</sqlMap>
resultClass 속성
ResultSetMetaData에 기반하여 VO객체의 속성에 자동 매핑시킴
VO 객체의 속성명과 SQL문으로 조회된 결과 필드명이 일치하는 경우 자동 매핑함.
단점 : type 명시불가, 관련 데이터 자동 로드 기능 없음. 약간의 성능 저하
<sqlMap>
<typeAlias alias="user" type="com.multicampus.biz.user.vo.UserVO"/>
<select id="getUser" parameterClass="string" resultClass="user">
SELECT ID, PASSWORD, NAME, ROLE FROM USERS WHERE ID=#id#
</select>
</sqlMap>
resultMap 속성
조회된 결과물의 필드명과 VO객체의 속성명이 일치하지 않는 경우 직접 명시적으로 매핑할 수 있음
<sqlMap>
<resultMap id="userResultMap" class="com.multicampus.biz.vo.UserVO">
<result property="id" column="ID" />
<result property="password" column="PWD" />
<result property="name" column="NAME" />
<result property="role" column="ROLE" />
</resultMap>
<select id="getUserList" resultMap="userResultMap">
SELECT * FROM USERS
</select>
</sqlMap>
'It' 카테고리의 다른 글
생성자 상속 클래스 (0) | 2023.02.02 |
---|---|
골프 PAR(기준타수)란 (0) | 2023.02.01 |
마이크로프로그래밍 (0) | 2023.01.30 |
파이썬 클래스, 메소드, 메서드,모듈 (0) | 2023.01.29 |
C언어 출력 printf() (0) | 2023.01.28 |
- Total
- Today
- Yesterday
- 외국영화
- 박스오피스
- 실시간검색어
- 오늘의사건
- 미션 임파서블: 데드 레코닝 PART ONE 토렌트
- 영화
- 실검
- 옛날영화
- 미션 임파서블: 데드 레코닝 PART ONE 한글자막
- 미션 임파서블: 데드 레코닝 PART ONE 정식자막
- 미션 임파서블: 데드 레코닝 PART ONE 예고편
- 한국영화
- 엘리멘탈 다운로드
- 미션 임파서블: 데드 레코닝 PART ONE 무료보기
- 미션 임파서블: 데드 레코닝 PART ONE 다운로드
- Movie
- 추천영화
- 엘리멘탈 마그넷
- 미션 임파서블: 데드 레코닝 PART ONE 바로보기
- 엘리멘탈 고화질
- 오늘의이슈
- 엘리멘탈 다시보기
- 영화순위
- 엘리멘탈 정식자막
- 엘리멘탈 한글자막
- 영화소개
- 엘리멘탈 바로보기
- 영화추천
- 엘리멘탈 토렌트
- 엘리멘탈 무료보기
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |