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){}
}
}
자,이상 이 전부 입 니 다.초학 친구 들 에 게 도움 이 되 었 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.