일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
Tags
- 온라인 햇살론 할인
- 서민 저금리 대출
- KB손해보험 주택 화재보험
- 온라인 햇살론 보증료
- 온라인 햇살론 취급제한
- 서민 저금리 대출 대환 프로그램
- KB손해보험 주택 화재보험 다이렉트 보험료 추천
- 온라인 햇살론 금리
- 신용대출
- 주택 화재보험 보험료
- 주택 화재보험 다이렉트
- 서민 대환 대출
- 대출 금리 비교 추천
- KB손해보험 보험료
- 화재보험 다이렉트 보험료
- 알뜰폰 요금제 비교
- 온라인 햇살론 보증수수료
- KB손해보험 다이렉트 보험료
- 금리 비교 사이트
- 온라인 햇살론 재대출
- 알뜰폰 요금제
- 온라인 햇살론 자격
- 온라인 햇살론 추가대출
- 금리 사이트 추천
- 서민 저금리
- 화재보험 다이렉트
- 서민 대환 프로그램
- AI 이미지 사이트
- 노벨피아 추천
- 휴대폰 번호보호 서비스
Archives
- Today
- Total
아이인포
IBatis 아이바티스 사용하기 본문
아이바티스 SQL 매핑 프레임워크다....
나름 개인적으로 SQL 매핑 유틸성 클래스들이 더 편리하지만... 이런것도 알고 있어야지...
일단 돌아가게끔 설정하는 법부터...
아이바티스 로딩 설정 파일이다. DBCP를 이용하기 위해하는 것. 밑의 설정은
기존의 Datasource를 JNDI로 가져올때 쓴다.
<?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>
<!-- Configure a built-in transaction manager. If you're using an
app server, you probably want to use its transaction manager
and a managed datasource -->
<transactionManager type="EXTERNAL">
<dataSource type="JNDI">
<property name="DataSource" value="JNDI 명"/>
</dataSource>
</transactionManager>
<!-- List the SQL Map XML files. They can be loaded from the
classpath, as they are here (com.domain.data...) -->
<sqlMap resource="/ibatis/Test.xml"/>
<!-- List more here...
<sqlMap resource="com/mydomain/data/Order.xml"/>
<sqlMap resource="com/mydomain/data/Documents.xml"/>
-->
</sqlMapConfig>
쿼리를 id로 검색하여 사용할수 있게 한다. 하지만 이 xml 같은거 만들기도 짜증난다... 특히
resultMap 이 귀찮을거 같다... jsp 태그처럼 * 안먹는겨??
<?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 namespace="User">
<!-- Use type aliases to avoid typing the full classname every time. -->
<typeAlias alias="User_Info_Bean" type="ibatis.User_Info_Bean"/>
<!-- Result maps describe the mapping between the columns returned
from a query, and the class properties. A result map isn't
necessary if the columns (or aliases) match to the properties
exactly. -->
<resultMap id="UserResult" class="ibatis.User_Info_Bean">
<result property="user_NO" column="user_NO" />
</resultMap>
<!-- Select with no parameters using the result map for Account class. -->
<select id="selectAllUsers" resultMap="UserResult">
select * from User_T
</select>
</sqlMap>
자바
package ibatis;
import java.io.IOException;
import java.io.Reader;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
/**
* This is not a best practices class. It's just an example
* to give you an idea of how iBATIS works. For a more complete
* example, see JPetStore 5.0 at http://www.ibatis.com.
*/
public class IBatis_Test {
/**
* SqlMapClient instances are thread safe, so you only need one.
* In this case, we'll use a static singleton. So sue me. ;-)
*/
private static SqlMapClient sqlMapper;
/**
* It's not a good idea to put code that can fail in a class initializer,
* but for sake of argument, here's how you configure an SQL Map.
*/
static {
try {
Reader reader = Resources.getResourceAsReader("/ibatis/SqlMapConfig.xml");
sqlMapper = SqlMapClientBuilder.buildSqlMapClient(reader);
reader.close();
} catch (IOException e) {
// Fail fast.
throw new RuntimeException("Something bad happened while building the SqlMapClient instance." + e, e);
}
}
public static List selectAllAccounts () throws SQLException {
return sqlMapper.queryForList("selectAllUsers");
}
public static Map selectAllUsersForMap() throws SQLException
{
return sqlMapper.queryForMap("selectAllUsers", null, "user_NO");
}
public static User_Info_Bean selectAccountById (int id) throws SQLException {
return (User_Info_Bean) sqlMapper.queryForObject("selectAccountById", new Integer(id));
}
public static void insertAccount (User_Info_Bean account) throws SQLException {
sqlMapper.insert("insertAccount", account);
}
public static void updateAccount (User_Info_Bean account) throws SQLException {
sqlMapper.update("updateAccount", account);
}
public static void deleteAccount (int id) throws SQLException {
sqlMapper.delete("deleteAccount", new Integer(id));
}
}
덧붙여서... 자바 빈 클래스는 대소문자 제대로 지켜서 써야한다... 제대로 안쓰면 에러 빠바박... 민감한 녀석 같으니라고...
난 Map 으로 리턴받는게 더 편하다 ;; Map 으로 리턴 받으려고 해도.... 안될거 같다.. 이게 그래도 DAO 짜는거보다야 편할수도
있겠지만... 어째... 비슷해보인다 -_-?? DAO 가 아무리 40~50줄이지만 어차피 카피엔페이스트이고 SQL 문만 바꿔주고 파라미터 세팅만
바뀌는데 ... 으휴... 어차피 SQL을 언어에 종속적이지 않고 컴파일이 필요없고.... 등의 이유가 있을수 있지만... 언어에 종속적이지 않을
프로젝트가 얼마나 되며 , SQL 문 테스트 없이 코드에 반영하는 프로그래머가 얼마나 될것이며... 파라미터 세팅같은 반복작업을 틀릴 사람은
얼마나 되겠는가? 따라서 나름 편한거 써도 된다는 생각을 가진다....
Comments