iBATIS.net에서 자주 사용하는 검색 방식에 대한 간단한 분석
8637 단어 ibatis
IBAtis.Net에서 편리한데이터베이스 조회 방식을 제공합니다.
Dao 코드 섹션에는 주로 두 가지 방법이 있습니다.
1. 조회 결과는 하나의 대상이다.
- ISqlMapper sqlMap = sqlMapDaoSession.SqlMap;
-
- return (Account) sqlMap.QueryForObject("GetAccountViaColumnName", accountID);
2. 조회 결과는 하나의 목록이다.
- ISqlMapper sqlMap = sqlMapDaoSession.SqlMap;
-
- return (ArrayList)sqlMap.QueryForList("GetAccountAsHashtableResultClass", 1);
이 두 가지 방법은 동시에 범용을 위한 중재 방법을 제공했다.이 두 방법의 첫 번째 파라미터는 프로파일의select id에 대응하고 두 번째 파라미터는 조회에 전송되는 조건을 나타낸다
구성 파일의 쓰기 방법:
IBAtis.Net에서는 자주 사용하는 몇 가지 방법을 보여 주는 쿼리 구성에 대한 쓰기 방법을 제공합니다.
1. 한 장의 표의 모든 데이터를 얻는다
- ﹤select id="GetAllAccountsAsHashMapViaResultMap"
- resultMap="account-hashtable-result"﹥
- select *
- from Accounts
- order by Account_ID
- ﹤/select﹥
이것은 가장 간단한 방법입니다. 여기서 resultMap은 질의 결과를 반환하는 형식으로 별도로 설정해야 합니다.
- ﹤resultMap id="account-hashtable-result" class="Hashtable"﹥
- ﹤result property="Id" column="Account_ID"/﹥
- ﹤result property="FirstName" column="Account_FirstName"/﹥
- ﹤result property="LastName" column="Account_LastName"/﹥
- ﹤result property="EmailAddress" column="Account_Email"/﹥
- ﹤/resultMap﹥
표시: 결과의 모든 기록은 하나의 Hashtable로 비추고, 이 Hashtable에는 네 개의 Key (Id,FirstName...) 가 포함되어 있습니다.
2. 조건에 따라 조회(간단한 방법):
- ﹤select id="GetAccountViaColumnIndex"
- parameterClass="int"
- resultMap="indexed-account-result"﹥
- select
- Account_ID,
- Account_FirstName,
- Account_LastName,
- Account_Email
- from Accounts
- where Account_ID = #value#
- ﹤/select﹥
하나의 조건만 있습니다. 들어오는 매개 변수의 유형은 int형입니다. sql를 맞춤법으로 쓸 때 #value#을 사용하면 됩니다
3. 조건에 따라 조회(비교적 복잡한 방식):
- ﹤select id="GetAccountsDynamic" resultMap="account-result" parameterClass="Hashtable" ﹥
- select top $MaximumAllowed$ * from Accounts
- ﹤dynamic prepend="where"﹥
- ﹤isParameterPresent﹥
- ﹤isNotEmpty prepend="and" property="FirstName" ﹥
- Account_FirstName LIKE '%$FirstName$%'
- ﹤/isNotEmpty﹥
- ﹤isNotEmpty prepend="and" property="LastName" ﹥
- Account_LastName LIKE '%$LastName$%'
- ﹤/isNotEmpty﹥
- ﹤isNotEmpty prepend="and" property="EmailAddress" ﹥
- Account_Email LIKE '%$EmailAddress$%'
- ﹤/isNotEmpty﹥
- ﹤/isParameterPresent﹥
- ﹤/dynamic﹥
- order by Account_LastName
- ﹤/select﹥
입력 매개 변수는 Hashtable입니다. Maximum Allowed 등은 Hashtable의 키 값을 표시하고 $$로 포함합니다.
또한 검색 시 조건에 따라 빈 동적 맞춤법 검사 ql 문장을 사용할 수 있습니다
PS: 매개 변수를 입력하면 Account 클래스를 사용할 수 있습니다. 해당 키는 클래스의 속성 이름과 일치해야 합니다(대소문자도 마찬가지).
4. 멀티 테이블 조회
다중 테이블 조회 시 매개 변수를 반환하는 방법은 세 가지가 있는데 하나는 새 클래스이고 이 클래스에는 여러 테이블의 모든 속성이 포함되어 있으며 또 하나는 Hastable로 직접 반환하는 것입니다.
- ﹤select id="GetAccountAsHashtableResultClass"
- sultClass="HashMap"﹥
- select
- a.*,b.*
- from a,b
- where a.Account_ID = b.Account_ID
- ﹤/select﹥
PS: 여기의 HashMap은 실제로는 Hashtable입니다.
세 번째 방법은 IBAtis의 복잡한 속성을 사용하는 것이다(Anders Cui의 알림에 감사합니다)
예를 들어 현재 두 장의 시계 어카운트와 Degree가 있는데 어카운트 를 사용합니다ID 연결은 다음과 같이 수정되어야 합니다.
1. Account 솔리드 클래스를 수정하고 속성을 추가합니다.
- private Degree _degree;
- public Degree Degree
- {
- get
- {
- return _degree;
- }
- set
- {
- _degree = value;
- }
- }
이렇게 하면 1:1의 관계이고 Ilist DegreeList의 속성도 추가할 수 있습니다. 이렇게 하면 조회의 결과는 1:n의 관계입니다.
2. 프로필을 수정한다.
ResultMaps 섹션에 추가하려면:
- ﹤resultMap id="comresult" class="Account" ﹥
- ﹤result property="Id" column="Account_ID"/﹥
- ﹤result property="FirstName" column="Account_FirstName"/﹥
- ﹤result property="LastName" column="Account_LastName"/﹥
- ﹤result property="EmailAddress" column="Account_Email" nullValue="[email protected]"/﹥
- ﹤result property="Degree" column="Account_ID=Account_ID" select="degreeretrive" /﹥
- ﹤/resultMap﹥
Degree 속성에 대해lazyLoad=true 지연 로드를 추가하여 성능을 최적화할 수 있다(즉, 시작할 때 실제 조회 데이터베이스가 없고 속성Degree를 사용할 때 해당하는 데이터를 실제적으로 조회할 수 있다)
statements 섹션에 가입하려면 다음과 같이 하십시오.
- ﹤statement id="degreeretrive"
- parameterClass="Hashtable"
- resultClass="Degree"﹥
- select *
- from Degree
- where Account_id = #Account_ID#
- ﹤/statement﹥
-
- ﹤select id="GetComTables"
- resultMap="comresult"﹥
- select *
- from Accounts
- order by Account_ID
- ﹤/select﹥
이렇게 하면 OO와 일치하는 결과를 정확하게 조회할 수 있지만 두 가지 작은 문제가 있다.
1. 번거롭고 융통성이 부족하다
2. 성능에 영향을 받는다.
이런 방식은 사실 Hibernet과 비교적 유사하다. 검색할 때 먼저 실행한다
- select * from Accounts order by Account_ID
그리고 이 문장의 결과에 따라 예를 들어 100개의 기록이 있다면 100번 이하의 문장을 집행해야 한다.
- select * from Degree where Account_id = @param0
입출력 정보:
위에서 볼 수 있는 입력은 다음과 같습니다:parameterClass와parameterMap, 출력할 때는:resultClass와resultMap을 사용할 수 있습니다
resultMap과parameterMap에 대해서는 따로 설정해야 합니다(위 참조).
parameterClass와resultClass의 경우 C# 고유 유형이라면 직접 사용할 수 있으며, 사용자 정의 클래스라면 SqlMap.config에서 먼저 다음과 같이 설명합니다.
- ﹤alias﹥
- ﹤typeAlias alias="Account" type="GSpring.Domain.Account"/﹥
- ﹤/alias﹥
iBATIS.net에서 자주 사용하는 조회 방식은 여기까지 소개합니다. 소개를 통해 iBATIS를 알 수 있기를 바랍니다.net에서 자주 사용하는 검색 방식입니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.