Spring/Spring 기본 지식
MyBatis 속성
레알윙
2020. 5. 6. 08:34
반응형
이전글 보기
2020/03/23 - [Spring/Spring 기본 지식] - Spring mybatis jdbc 기본 연결테스트
2020/03/23 - [Spring/Spring 기본 지식] - JDBC 사용 - 커넥션 풀
select 속성
속성 | 설명 |
id |
구문을 찾기 위해 사용될 수 있는 네이스페이스내 유일한 구분자 |
parameterType | 구문에 전달될 파라미터의 패키지 경로를 포함한 전체 클래스명이나 별칭 |
flushCache | 이 값을 true 로 셋팅하면 구문이 호출될때마다 캐시가 지원 된다.(flush). 디폴트는 false 이다. |
timeout | 예외가 던져지기 전에 데이터베이스의 요청 결과를 기다리는 최대시간을 설정한다. 디폴트는 셋팅하지 않는 것이고 드라이버에 따라 다소 지원되지 않을 수 있다. |
statementType | STATEMENT, PREPARED 또는 CALLABLE중 하나를 선택할 수 있다. 마이바티스에게 Statement, PreparedStatement 또는 CallableStatement를 사용하게 한다. 디폴트는 PREPARED 이다. |
useGeneratedKeys | (입력(insert, update)에만 적용) 데이터베이스에서 내부적으로 생성한 키 (예를들어 MySQL또는 SQL Server와 같은 RDBMS의 자동 증가 필드)를 받는 JDBC getGeneratedKeys메소드를 사용하도록 설정하다. 디폴트는 false 이다. |
keyProperty | (입력(insert, update)에만 적용) getGeneratedKeys 메소드나 insert 구문의 selectKey 하위 엘리먼트에 의해 리턴된 키를 셋팅할 프로퍼티를 지정. 디폴트는 셋팅하지 않는 것이다. 여러개의 칼럼을 사용한다면 프로퍼티명에 콤마를 구분자로 나열할수 있다. |
keyColumn | (입력(insert,update)에만 적용) 생성키를 가진 테이블의 컬럼명을 세팅, 키 칼럼이 테이블에 첫번째 컬럼이 아닌 데이터베이스(PostgreSQL 처럼)에서만 필요하다. 여러개의 컬럼을 사용한다면 프로퍼티명에 콤마를 구분자로 나열을 할 수 있다. |
databaseId | 설정된 databaseIDProvider가 있는 MyBatis는 databaseID 속성이 없는 모든 구문을 로드하거나 일치하는 databaseID와 함께 로드될 것이다. 같은 구문에서 databaseID가 있거나 없는 경우 모두 있담녀 뒤에 나온 것이 무시된다. |
parameterMap | 파라미터 매핑하기 위해 사용되었으나 현재는 사용하지 않음 |
Insert, update, delete 속성
속성 | 설명 |
keyProperty | selectKey구문의 결과가 셋팅될 대상 프로퍼티. |
keyColumn | 리턴되는 결과셋의 칼럼명은 프로퍼티에 일치한다. 여러개의 칼럼을 사용한다면 칼럼명의 목록은 콤마를 사용해서 구분한다. |
resultType | 결과의 타입. 마이바티스는 이 기능을 제거할 수 있지만 추가하는게 문제가 되지는 않을것이다. 마이바티스는 String을 포함하여 키로 사용될 수 있는 간단한 타입을 허용한다. |
order | BEFORE 또는 AFTER를 셋팅할 수 있다. BEFORE로 설정하면 키를 먼저 조회하고 그 값을 keyProperty 에 셋팅한 뒤 insert 구문을 실행한다. AFTER로 설정하면 insert 구문을 실행한 뒤 selectKey 구문을 실행한다. 오라클과 같은 데이터베이스에서는 insert구문 내부에서 일관된 호출형태로 처리한다. |
statementType | 위 내용과 같다. 마이바티스는 Statement, PreparedStatement 그리고 CallableStatement을 매핑하기 위해 STATEMENT, PREPARED 그리고 CALLABLE 구문타입을 지원한다. |
#{}
- 파라매터가 STring 형태로 들어와 자동으로 '파라메터' 형태가 된다.
- 쿼리 주입을 예방할 수 있어 보안측면에서 유리하다.
- PreparedStatement을 생성하여 ?에 파라미터가 바인딩되어 수행된다. 이렇게 파싱된 쿼리문은 재활용(캐싱)되기 때문에 효율적이다.
${}
- 파라매터가 바로 출력된다.
- 해당 컬럼의 자료형애 맞추어 파라매터의 자료형이 변경된다.
- 쿼리 주입을 예방할 수 없어 보안측면에서 불리하다. 그러므로 사용자의 입력을 전달할때는 사용하지 않는편이 낫다.
- 테이블이나 컬럼명을 파라메터로 전달하고싶을 때 사용한다. #{}은 자동으로 ''가 붙어서 이 경우에는 사용할 수 없다.
출처
반응형