현재 프로젝트의 dao는 iBatis로 되어있다.
iBatis 는 자바와 sql 사이에 자동 매핑을 지원하는 ORM이다.
단순히 sql과 오브젝트 자동 매핑기능을 이용하고 싶으면 스프링 JDBC를 이용하는 것이 좋다.
sql 매핑 관련 고급 기술을 사용하고 싶다면 iBatis 사용 추천.
서비스 코드에서 1578번째와 1579번째 코드가 dao로 연결시키는 코드이다.
따라가보면
이렇게 sqlMapClientTemplate 으로 연결된 것을 볼 수 있다.
내가 아는 방법은 여기서 xml 파일로 연결시킨다음 리턴값을 resultType을 지정해서 받아오는 거였는데
iBatis는 약간 방식이 다른거 같다?
일단 공통 dao 파일의 63번째줄과 67번째 줄 처럼 스프링 빈을 등록해준다.
또한 iBatis 를 이용하려면 환경설정 정보를 담은 xml 파일과 매핑 파일 xml 두개가 필요하다.
환경 설정 정보를 담은 xml 파일을 찾기위해
컨트롤 + h 를 통해 서치해보니
정말 많은 것을 확인할 수 있다. 우리가 지금 쓰는 디비는 mssql 임으로 이쪽을 확인해본다.
이 많은 것들이 ibatis 설정 파일이라고 한다.
자 이제 dao 공통파일을 보면
이러한 문법을 볼 수 있는데 여기서 알아야 할 정보는 sqlMapClientTemplate 이다.
sqlMapClientTemplate을 사용하는 이유는 sqlMapClient 을 직접 사용하는 것보다 다양한 기술을 사용할 수 있다.
그리고 미리 저장해둔 변수를 호출하면 되서 간편하다.
insert 를 사용하는 방법은 두가지이다.
Object insert(String state)
Object insert(String state, Object object)
인데 위 방법에서는 두번째 방법을 사용했다.
update를 사용하는 방법은 세가지이다.
int update(String state) - 이는 update를 실행 한뒤 영향을 받은 row의 개수를 리턴해준다.
int update(Sring state, Object object) - 이는 위와 같다.
void update(String state, Object object, int requiredRowsAffected) - 이는 update를 실행하고 영향을 받은 로우의 갯수를 체크해준다. 만약 기대한 로우의 개수와 결과가 일치하지 않으면 예외 발생.
delete를 사용하는 방법은 세가지이다.
int delete(String state) - delete를 실행한 뒤 영향을 받은 row의 개수를 리턴해준다.
int delete(String state, Object object) - 위와 같다.
void delete(String stae, Obejct object, int requiredRowsAffected) - delete 문을 실행하고 영향받은 로우의 개수가 일치하는지 확인해준다. 실제 영향받은 로우의 개수가 주어진것과 다르면 예외 발생.
조회같은 경우도 4가지로 나뉜다.
queryForObject()
queryForList()
queryForMap()
queryWithRowHandler()
각각의 설명은 나중에 덧붙여야겠다.
'물류관련' 카테고리의 다른 글
어떤 프로시저로 배치가 돌고 있는지 확인하는 방법 (0) | 2022.12.29 |
---|---|
프로시저 쿼리문에서 사용하는 부분 확인해보기 (0) | 2022.12.21 |
화면 구성 기본(솔루션의 그리드리스트 사용법) - KIOSK2 (0) | 2022.12.08 |
할당 피킹, 재고이동 (0) | 2022.12.07 |
SAP 에서 나오는 용어인 RFC 란? (0) | 2022.12.05 |