iBatis SqlMapClient API
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; } } |