ibatis 프레임 워 크 에서 sqlMapConfig.xml 상세 설명
12165 단어 ibatis
http://zhaohe162.blog.163.com/blog/static/382167972010817343888/?suggestedreading&wumii
http://jun1986.iteye.com/blog/1225238
http://blog.sina.com.cn/s/blog_74fa15e10100qaf5.html
sqlMapConfig.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
"http://www.ibatis.com/dtd/sql-map-config-2.dtd">
<!-- ibatis -->
<sqlMapConfig>
<!-- -->
<properties resource="org/ibatis/config/SqlMapConfig.properties"/>
<!--
cacheModelsEnabled: SqlMapConfig
enhancementEnabled: POJO geter/seter ,
lazyLoadingEnabled:
errorTracingEnabled: , "true"
maxRequests: (Statement )
maxSession: Session , SqlMapClient
maxTransactions:
useStatementNamespaces: Statement 。
,sqlMap namespace
sqlMap : <sqlMap namespace="User"> , sqlMap "User" 。
useStatementNamespaces="true" ,Statement , :sqlMap.update("User.updateUser",user);
Statement , : sqlMap.update("updateUser",user); ,Statement 。
-->
<settings
cacheModelsEnabled="true"
enhancementEnabled="true"
lazyLoadingEnabled="true"
errorTracingEnabled="true"
maxRequests="32"
maxSessions="10"
maxTransactions="5"
useStatementNamespaces="false"
/>
<!--
transactionManager: ibatis , :
1.JDBC JDBC Connection.commit/rollback 。
2.JTA JTA 。
3.EXTERNAL , EJB ibatis, EJB 。 ibatis 。
-->
<transactionManager type="JDBC">
<!-- dataSource: transactionManager , ibatis DataSource 。
type :dataSource type dataSource 。
:
SIMPLE:
SIMPLE ibatis dataSource ,
, ibatis
com.ibatis.sqlmap.engine.datasource.SimpleDataSourceFactory。
DBCP:
Apache DBCP DataSource , DataSource , , ibatis
com.ibatis.sqlmap.engine.datasource.DbcpDataSourceFactory。
JNDI:
J2EE DataSource ,DataSource JNDI Name 。 ibatis
com.ibatis.sqlmap.engine.datasource.JndiDataSourceFactory。
-->
<dataSource type="SIMPLE">
<!-- JDBC -->
<property name="JDBC.Driver" value="${driver}"/>
<!-- URL -->
<property name="JDBC.ConnectionURL" value="${url}"/>
<!-- userName -->
<property name="JDBC.Username" value="${userName}"/>
<!-- password -->
<property name="JDBC.Password" value="${password}"/>
<!-- -->
<property name="Pool.MaximumActiveConnections" value = "10"/>
<!-- (idle) -->
<property name="Pool.MaximumIdleConnections" value="5"/>
<!-- , -->
<property name="Pool.MaximumCheckoutTime" value="120000"/>
<!-- , , -->
<property name="Pool.TimeToWait" value="500"/>
<!-- -->
<property name="Pool.PingQuery" value ="select 1 from ACCOUNT"/>
<!-- -->
<property name="Pool.PingEnabled" value ="false"/>
<!-- -->
<property name="Pool.PingConnectionsOlderThan" value ="1"/>
<!-- -->
<property name="Pool.PingConnectionsNotUsedFor" value ="1"/>
</dataSource>
</transactionManager>
<sqlMap resource="org/ibatis/hyf/maps/User.xml"/>
</sqlMapConfig>
(1)설정 노드
cacheModelsEnabled
SqlMapClient 의 캐 시 메커니즘 을 사용 할 지 여부 입 니 다."true"로 설정 하 는 것 을 권장 합 니 다.
enhancementEnabled
POJO 에서 바이트 코드 증강 기 getter/setter 의 호출 효능 을 사용 하여 Reflect 가 가 져 오 는 성능 비용 을 피 할 지 여부 입 니 다.또한 레이 지 로 딩 에 도 향상 을 가 져 왔 다."true"로 설정 하 는 것 을 권장 합 니 다.
errorTracingEnabled
오류 로 그 를 사용 할 지 여부 입 니 다.개발 기간 동안 디 버 깅 에 편리 하도록"true"로 설정 하 는 것 을 권장 합 니 다.
lazyLoadingEnabled
지연 로드 메커니즘 을 사용 할 지 여부 입 니 다."true"로 설정 하 는 것 을 권장 합 니 다.
maxRequests
최대 동시 다발 요청 수(Statement 동시 다발 수)
maxTransactions
최대 병렬 트 랜 잭 션 수
maxSessions 최대 세 션 수.현재 최대 허용 되 는 병렬 SqlMapClient 수 입 니 다.
useStatementNamespaces
Statement 네 임 스페이스 를 사용 할 지 여부 입 니 다.
이 네 임 스페이스 는 맵 파일 에서 sqlMap 절의 namespace 속성 을 말 합 니 다.예 를 들 어 상기 에서 tuse
표 의 맵 파일 sqlMap 노드:
그렇지 않 으 면 sqlMap.update("updateUser",user)와 같이 Statement 이름 으로 직접 호출 하면 됩 니 다.그러나 이 때 모든 맵 파일 에서 Statement 정의 가 이름 이 바 뀌 지 않도록 해 야 합 니 다.
트 랜 잭 션 관리자 노드
transactionManager 노드 는 ibatis 의 사무 관리 자 를 정의 합 니 다.현재 다음 과 같은 몇 가 지 를 제공 합 니 다.
종류 선택:
JDBC
전통 적 인 JDBC Connection.comit/rollback 을 통 해 사무 지원 을 실현 합 니 다.
JTA
용기 에서 제공 하 는 JTA 서 비 스 를 사용 하여 전역 사무 관 리 를 실현 합 니 다.
EXTERNAL
EJB 에서 ibatis 를 사용 하 는 경우 EJB 의 배치 설정 을 통 해 외부 트 랜 잭 션 관 리 를 수행 할 수 있 습 니 다.
움 직 이 는 사무 관리 체제.이 때 ibatis 는 모든 업 무 를 외부 용기 에 위탁 하여 관리 할 것 입 니 다.
dataSource 노드
dataSource 는 transactionManager 노드 에 속 하 며 ibatis 런 타임 에 사용 할 DataSource 속성 을 설정 합 니 다.
type 속성:
dataSource 노드 의 type 속성 은 dataSource 의 실현 유형 을 지정 합 니 다.선택 가능 한 항목:
SIMPLE:
SIMPLE 는 ibatis 에 내 장 된 dataSource 의 실현 으로 그 중에서 간단 한 것 을 실현 했다.
데이터베이스 연결 탱크 메커니즘
com.ibatis.sqlmap.engine.datasource.SimpleDataSourceFactory。
DBCP:
아파 치 DBCP 연결 풀 구성 요소 기반 DataSource 패키지
DataSource 서 비 스 를 제공 할 때 이 옵션 을 사용 하 는 것 을 권장 합 니 다.ibatis 구현 클래스 는?
com.ibatis.sqlmap.engine.datasource.DbcpDataSourceFactory。
JNDI:
J2EE 용기 에서 제공 하 는 DataSource 를 사용 하면 DataSource 가 지 정 됩 니 다.
의 JNDI Name 을 용기 에서 가 져 옵 니 다.대응 ibatis 구현 클래스 는
com.ibatis.sqlmap.engine.datasource.JndiDataSourceFactory。
dataSource 의 하위 노드 설명(SIMPLE&DBCP):
JDBC.Driver JDBC 드라이버.
org.gjt.mm.mysql.Driver
JDBC.ConnectionURL
데이터베이스 URL.
jdbc:mysql://localhost/sample
SQLServer JDBC Driver 를 사용한다 면 필요 합 니 다.
url 이후 SelectMethod=Cursor 를 추가 하여 획득
JDBC 업무 의 다 중 Statement 지원.
JDBC.Username
데이터베이스 사용자 이름
JDBC.Password
데이터베이스 사용자 암호
Pool.MaximumActiveConnections
데이터베이스 연결 탱크 가 유지 할 수 있 는 최대 용량.
Pool.MaximumIdleConnections
데이터베이스 연결 탱크 에서 허용 하 는 연결 수 입 니 다.
JNDI 는 대부분의 설정 이 응용 서버 에서 이 루어 지기 때문에 ibatis 의 설정 이 상대 적 으로 간단 합 니 다.
JDBC 와 JTA 사무 관 리 를 각각 사용 하 는 JDNI 설정:
JDBC 트 랜 잭 션 관 리 를 위 한 JNDI DataSource 설정 사용 하기
< transactionManager type ="JDBC" >
< dataSource type ="JNDI" >
< property name ="DataSource"
value ="java:comp/env/jdbc/myDataSource" />
< transactionManager type ="JTA" >
< property name ="UserTransaction"
value ="java:/ctx/con/UserTransaction" />
< dataSource type ="JNDI" >
< property name ="DataSource"
value ="java:comp/env/jdbc/myDataSource" />
sqlMap 노드
sqlMap 노드 는 맵 파일 의 위 치 를 지정 합 니 다.설정 에 여러 개의 sqlMap 노드 가 나타 나 서 지정 할 수 있 습 니 다.
프로젝트 에 포 함 된 모든 맵 파일 입 니 다.
ibatis 기초 의미
XmlSqlMapClientBuilder
XmlSqlMapClient Builder 는 ibatis 2.0 이후 버 전에 새로 도 입 된 구성 요소 로 1.x 를 대체 합 니 다.
버 전의 XmlSqlMapBuilder.설정 파일 에 따라 SqlMapClient 인 스 턴 스 를 만 드 는 역할 을 합 니 다.
SqlMapClient
SqlMapClient 는 ibatis 의 핵심 구성 요소 로 데이터 조작 을 제공 하 는 기초 플랫폼 입 니 다.SqlMapClient
XmlSqlMapClient Builder 를 통 해 만 들 수 있 습 니 다:
String resource = " com/ibatis/sample/SqlMapConfig.xml " ;
Reader reader;
reader = Resources.getResourceAsReader(resource);
XmlSqlMapClientBuilder xmlBuilder =
new XmlSqlMapClientBuilder();
SqlMapClient sqlMap = xmlBuilder.buildSqlMap(reader); "com/ibatis/sample/sql MapConfig.xml"설정 파일 이 CLASSPATH 에 있 음 을 가리 키 고 있 습 니 다.
상대 경로 입 니 다.XmlSqlMapClient Builder 는 Reader 형식의 설정 문 을 받 아들 입 니 다.
구성 인자 에 따라 SqlMapClient 인 스 턴 스 를 만 듭 니 다.
SqlMapClient 는 많은 데이터 조작 방법 을 제공 하 였 으 며,다음은 자주 사용 하 는 방법의 예시 이 며,구체 적 으로 설명 한다.
문 서 는 ibatis 자바 doc 또는 ibatis 공식 개발 매 뉴 얼 을 참조 하 십시오.
SqlMapClient 기본 조작 예시
다음 예 는 ibatis 공식 개발 매 뉴 얼 에서 따 온 것 으로 필 자 는 이 를 재 구성 하여 더욱 좋 은 읽 기 효 과 를 얻 었 다.
예 1:데이터 기록 작업(insert,update,delete):
sqlMap.startTransaction();
Product product = new Product();
product.setId ( 1 );
product.setDescription (“Shih Tzu”);
int rows = sqlMap.insert (“insertProduct”, product);
sqlMap.commitTransaction(); 예 2:데이터 조회(select)
sqlMap.startTransaction();
Integer key = new Integer ( 1 );
Product product = (Product)sqlMap.queryForObject
(“getProduct”, key);
sqlMap.commitTransaction(); 예 3:지정 한 대상 에 검색 결 과 를 저장 합 니 다(select)
sqlMap.startTransaction();
Customer customer = new Customer();
sqlMap.queryForObject(“getCust”, parameterObject, customer);
sqlMap.queryForObject(“getAddr”, parameterObject, customer);
sqlMap.commitTransaction(); 예 4:대량 조회 실행(select)
sqlMap.startTransaction();
List list = sqlMap.queryForList (“getProductList”, null )
sqlMap.commitTransaction(); 예 5:AutoCommit 에 대하 여
//startTransaction 을 미리 실행 하지 않 았 을 때 기본 값 은 autocommt 모드
int rows = sqlMap.insert (“insertProduct”, product); 예 6:지정 한 범위 내의 데 이 터 를 조회 합 니 다.
sqlMap.startTransaction();
List list = sqlMap.queryForList (“getProductList”, null , 0 , 40 );
sqlMap.commitTransaction(); 예 7:RowHandler 와 결합 하여 조회(select)
public class MyRowHandler implements RowHandler {
public void handleRow (Object object, List list) throws
SQLException {
Product product = (Product) object;
product.setQuantity ( 10000 );
sqlMap.update (“updateProduct”, product);
}
}
sqlMap.startTransaction();
RowHandler rowHandler = new MyRowHandler();
List list = sqlMap.queryForList (“getProductList”, null ,
rowHandler);
sqlMap.commitTransaction();
//예 8:페이지 별 조회(select)
PaginatedList list =
sqlMap.queryForPaginatedList (“getProductList”, null , 10 );
list.nextPage();
list.previousPage();
//예 9:맵 기반 대량 조회(select)
sqlMap.startTransaction();
Map map = sqlMap.queryForMap (“getProductList”, null ,
“productCode”);
sqlMap.commitTransaction();
Product p = (Product) map.get(“EST - 93 ”);
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ibatis 예(二)다음 6개의 파일: User.java UserTest.java SqlMapConfig.xml User.xml log4j.properties t_user.sql 1. 우선 디렉터리 구조를 살펴보자. 2.t_user.s...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.