IBatis 단순 구현(홈 키 자동 생 성)

블 로 그 를 업데이트 하지 않 은 부분 이 있 습 니 다.용서해 주세요.
   그동안 Ibatis 쪽 을 보면 서 IBatis 공식 문 서 를 다 봤 는데 IBatis 가 공식 적 으로 말 한 것 처럼 문턱 이 낮 지만 더욱 유연 하 다 고 생각 했 습 니 다.
   아래 세 단락 은'Ibatis 개발 지침'의 원 어 를 인용 한 것 이다.
  
Hibernate 와 Apache OJB 등'원 스 톱'ORM 솔 루 션 에 비해 ibatis 는'반자동 화'ORM 실현 이다.   이른바'반자동'이라는 것 은 이해 하기 가 좀 어색 할 수 있다.현재 주류 인 ORM 을 살 펴 보면 Hibernate 든 Apache OJB 든 데이터베이스 구조 에 비교적 완전한 패 키 징 을 제공 하고 POJO 에서 데이터베이스 시트 까지 의 모든 매 핑 체 제 를 제공 합 니 다.프로그래머 는 POJO 에서 데이터베이스 시트 까지 의 매 핑 관 계 를 정의 하기 만 하면 Hibernate 나 OJB 가 제공 하 는 방법 으로 지구 층 작업 을 완성 할 수 있다.프로그래머 는 SQL 에 대한 숙련 도 필요 없 이 Hibernate/OJB 는 제 정 된 저장 논리 에 따라 해당 하 는 SQL 을 자동 으로 생 성하 고 JDBC 인 터 페 이 스 를 호출 하여 실행한다.   “반자동 화 는 Hibernate 등에 비해 전면적 인 데이터베이스 패 키 징 메커니즘 을 제공 하 는'전자 동'ORM 실현 에 있어'전자 동'ORM 은 POJO 와 데이터베이스 테이블 간 의 매 핑,SQL 의 자동 생 성과 실행 을 실현 했다.한편,ibatis 의 착력점 은 POJO 와 SQL 간 의 매 핑 관계 에 있다.즉,ibatis 는 프로그래머 가 실행 기간 에 SQL 을 자동 으로 생 성하 지 않 는 다 는 것 이다.구체 적 인 SQL 은 프로그래머 가 작성 한 다음 맵 설정 파일 을 통 해 SQL 에 필요 한 인자 와 되 돌아 오 는 결과 필드 를 지정 한 POJO 에 표시 해 야 합 니 다.
   이런 묘 사 를 보고 너 에 대해 어떤 생각 을 가지 고 있 니?
   기술 에 대한 열정 으로 Ibatis 를 보 니 정말 괜 찮 은 것 같 습 니 다.간단 한 예 를 써 서 참고 하 세 요.부족 한 점 이 있 으 면 지적 해 주세요.
   이 예 에 사 용 된 Jar 파일 은:

ibatis-2.3.jar
mysql-connecter.jar

  
우선 낡은 방식 으로 데이터베이스 테이블 을 만 듭 니 다(Mysql 데이터베이스 사용).

CREATE DATABASE IBATISSTUDY;
CREATE TABLE PERSON(
  ID INT PRIMERY KEY AUTU_INCREMENT,
  U_NAME VARCHAR(20),
  U_PASSWORD VARCHAR(20)
)

  
그리고 POJO 클래스 를 만 듭 니 다:

package com.jack.ibatis.pojo;

public class Person {
	private int id;
	private String username;
	private String password;

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}
}

   보시 다시 피 Person 클래스 의 속성 은 person 표 의 필드 와 일치 하지 않 지만 상관 없습니다.SqlMap 에서 ResultMap 요 소 를 사용 하여 설정 할 수 있 습 니 다.
  
지금 은 Ibatis 의 두 가지 핵심 설정 SqlMapConfig 맵 파일 과 SqlMap 맵 파일 을 설정 해 야 합 니 다.
먼저 설정 해 야 할 것 은 당연히 SqlMapConfig 파일 입 니 다.

<?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  ,          -->
	<properties resource="mysql.properties"/>
<!--     SqlMapClient      ,    
<settings 
    cacheModelsEnabled="true"    
    enhancementEnabled="true"    
    lazyLoadingEnabled="true"    
    errorTracingEnabled="true"    
    maxRequests="32"        
    maxSessions="10"        
    maxTransactions="5"        
    useStatementNamespaces="false" 
    /> 
-->
	<!--   Ibatis    ,  JDBC    ,     Simple   -->
	<transactionManager type="JDBC">
		<dataSource type="SIMPLE">
			<property name="JDBC.Driver" value="${mysql.driver}"/>
			<property name="JDBC.ConnectionURL" value="${mysql.url}"/>
			<property name="JDBC.Username" value="${mysql.username}"/>
			<property name="JDBC.Password" value="${mysql.password}"/>
		</dataSource>
	</transactionManager>	
	<!--   Ibatis    SqlMap     -->
	<sqlMap resource="com/jack/ibatis/pojo/map/person.xml"/>
</sqlMapConfig>

   setting 요 소 는 SqlMapClient 대상 의 각 옵션 을 설정 하고 최적화 할 수 있 습 니 다.이 예 는 간단 한 사용 일 뿐 모든 것 을 설정 할 필요 가 없습니다.
  
현재 SqlMap 파일 person.xml 을 설정 합 니 다.이 파일 은 POJO 클래스 를 위 한 것 입 니 다.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap      
    PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"      
    "http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap>
	<!--  Person        -->
	<typeAlias alias="person" type="com.jack.ibatis.pojo.Person"/>
	<!--              -->
	<resultMap class="com.jack.ibatis.pojo.Person" id="personMap">
		<result property="id" column="ID"/>
		<result property="username" column="U_NAME"/>
		<result property="password" column="U_PASSWORD"/>
	</resultMap>
	<!--      -->
	<insert id="insertPerson" parameterClass="person">
		<!--   Mysql       -->
		<selectKey keyProperty="id" resultClass="int">
			SELECT LAST_INSERT_ID() as value
		</selectKey>
                  <!--   Oracle       
                  <selectKey resultClass="int" keyProperty="id" type="pre">    
                            <![CDATA[SELECT STOCKIDSEQUENCE.NEXTVAL AS ID FROM DUAL]]>    
                  </selectKey>-->
                  <!--   MSServer       
                  <selectKey resultClass="int" keyProperty="id">    
                     <![CDATA[SELECT SCOPE_IDENTITY() AS ID ]]>  
                  </selectKey>-->
		<![CDATA[
			INSERT PERSON(U_NAME,U_PASSWORD) VALUES(#username#,#password#)
		]]>
	</insert>
	<!--        -->
	<select id="queryPersonById" parameterClass="int" resultMap="personMap">
		<![CDATA[
			SELECT * FROM PERSON WHERE ID=#id#
		]]>
	</select>
	<!--         -->
	<select id="queryAllPerson" resultMap="personMap">
		<![CDATA[
			SELECT * FROM PERSON
		]]>
	</select>
</sqlMap>

  OK,현재 모든 설정 이 완료 되 었 습 니 다.간단 한 테스트 를 해 보 겠 습 니 다.

package test.com.jack.ibatis;

import java.io.Reader;

import org.junit.Test;

import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
import com.jack.ibatis.pojo.Person;

public class TestPerson {
	@Test
	public  void testInsert(){
		String resource = "sqlMapConfig.xml";
		try {
			//      
			Reader reader = Resources.getResourceAsReader(resource);
			//  SqlMapClient
			SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
			Person person = new Person();
			person.setUsername("jack");
			person.setPassword("jack");
			//  Ibatis  
			sqlMap.startTransaction();
			sqlMap.insert("insertPerson", person);
			//  IBatis  
			sqlMap.commitTransaction();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	@Test
	public void testQuery(){
		String resource = "sqlMapConfig.xml";
		try {
			//      
			Reader reader = Resources.getResourceAsReader(resource);
			//  SqlMapClient
			SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
			//       
			sqlMap.queryForList("queryAllPerson");
			//       
			sqlMap.queryForObject("queryPersonById", 1);
		}catch(Exception e){}
	}
}

   자,이상 이 전부 입 니 다.초학 친구 들 에 게 도움 이 되 었 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기