개발자 센터/iBatis

iBatis SqlMapClient API

피곤키오 2009. 12. 13. 00:15

SqlMapClient API – 데이터 조회

 

queryForObject()

데이터베이스로부터 한 개의 레코드를 가져다가 자바 객체에 저장

Object queryForObject(String id, Object parameter) throws SQLException;

-       디폴트 생성자를 가진 객체를 생성(보편적 방법)

-       디폴트 생성자가 없으면 throws "런타임 예외"

 

queryForList()

한 개 이상의 레코드를 가져와서 자바 객체의 List를 만드는 데 사용

List queryForList(String id, Object parameter) throws SQLException;

-       매핑 구문이 반환하는 모든 객체를 반환

 

queryForMap()

데이터베이스로부터 한 개 혹은 그 이상의 레코드를 가져올 때 자바 객체의 Map을 반환

Map queryForMap(String id, Object parameter, String key) throws SQLException;

-       퀴리 실행후 Map 객체를 생성하여 반환

-       key : 결과 객체를 가리키는 키 - > 지정된 프로퍼티의 값

Map queryForMap(String id, Object parameter, String key, String value) throws SQLException;

-       key : 결과 객체를 가리키는 키 - > 지정된 프로퍼티의 값

-       value : 결과 객체 - > 지정된 프로퍼티의 값

 

 

SqlMapClient API – 데이터 갱신

 

insert 메소드

Object insert(String id, Object parameterObject) throws SQLException;

-       parameterObject : 파라미터 객체(데이터베이스에 데이터 삽입하는 데 사용)

-       반환 : 객체

 

update 메소드

int update(String id, Object parameterObject) throws SQLException;

-       parameterObject : 값을 제공하는 데 사용할 파라미터 객체

-       반환: update 구문에 의해 영향을 받은 레코드의 개수

 

 

delete 메소드

int delete(String id, Object parameterObject) throws SQLException;

-       parameterObject : 값을 제공하는 데 사용할 파라미터 객체

-       반환: 삭제된 레코드의 개수

 

 

트랜잭션(Transaction) 관리

SqlMapClient인터페이스는 트랜잭션경계를 지정하기 위해 메소드를 가진다. 트랜잭션이 시작되고 SqlMapClient인터페이스의 다음과 같은 메소드를 사용함으로써 commit되거나 rollback된다.

-       public void startTransaction () throws SQLException

-       public void commitTransaction () throws SQLException

-       public void endTransaction () throws SQLException

 

private Reader reader =

             new Resources.getResourceAsReader ("com/ibatis/example/sqlMap-config.xml");

private SqlMapClient sqlMap = XmlSqlMapBuilder.buildSqlMap(reader);

            

public updateItemDescription (String itemId, String newDescription)

             throws SQLException {

             try {

                           sqlMap.startTransaction ();

                           Item item = (Item) sqlMap.queryForObject ("getItem", itemId);

                           item.setDescription (newDescription);

                           sqlMap.update ("updateItem", item);

                           sqlMap.commitTransaction ();

             } finally {

                           sqlMap.endTransaction ();

             }

}

 

 

MySqlConfig.java

public class MySqlConfig {

            

             private static SqlMapClient sqlMap;

             static {

                           Reader reader = null;

                           try {

                                        String resource = "SqlMapConfig.xml";

                                        reader = Resources.getResourceAsReader (resource);

                                        sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);

                           } catch (Exception e) {

                                        e.printStackTrace();

                           }finally{

                                        if(reader != null){

                                                     try {

                                                                  reader.close();

                                                     } catch (IOException e) {

                                                                  e.printStackTrace();

                                                     }

                                        }

                           }

             }

             public static SqlMapClient getSqlMapInstance () {

                           return sqlMap;

             }

}