<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "HTTP://mybatis.org/dtd/mybatis-3-config.dtd">

<!-- 
셋팅	설명	사용가능한 값들	디폴트
cacheEnabled	설정에서 각 mapper 에 설정된 캐시를 전역적으로 사용할지 말지에 대한 여부	 true | false	 true
lazyLoadingEnabled	늦은 로딩을 사용할지에 대한 여부. 사용하지 않는다면 모두 즉시 로딩할 것이다.	 true | false	 true
aggressiveLazyLoading	활성화 상태로 두게 되면 늦은(lazy) 로딩 프로퍼티를 가진 객체는 호출에 따라 로드될 것이다. 반면에 개별 프로퍼티는 요청할때 로드된다.	 true | false	 true
multipleResultSetsEnabled	한개의 구문에서 여러개의 ResultSet 을 허용할지의 여부(드라이버가 해당 기능을 지원해야 함)	 true | false	 true
useColumnLabel	칼럼명 대신에 칼럼라벨을 사용. 드라이버마다 조금 다르게 작동한다. 문서와 간단한 테스트를 통해 실제 기대하는 것처럼 작동하는지 확인해야 한다.	 true | false	 true
useGeneratedKeys	생성키에 대한 JDBC 지원을 허용. 지원하는 드라이버가 필요하다. true 로 설정하면 생성키를 강제로 생성한다. 일부 드라이버(예를들면, Derby)에서는 이 설정을 무시한다.	 true | false	 False
autoMappingBehavior	MyBatis 가 칼럼을 필드/프로퍼티에 자동으로 매핑할지와 방법에 대해 명시. PARTIAL 은 간단한 자동매핑만 할뿐, 내포된 결과에 대해서는 처리하지 않는다. FULL 은 처리가능한 모든 자동매핑을 처리한다.	 NONE, PARTIAL, FULL	 PARTIAL
defaultExecutorType	디폴트 실행자(executor) 설정. SIMPLE 실행자는 특별히 하는 것이 없다. REUSE 실행자는 PreparedStatement 를 재사용한다. BATCH 실행자는 구문을 재사용하고 수정을 배치처리한다.	 SIMPLE REUSE BATCH	 SIMPLE
defaultStatementTimeout	데이터베이스로의 응답을 얼마나 오래 기다릴지를 판단하는 타임아웃을 셋팅	 양수	셋팅되지 않음(null)
safeRowBoundsEnabled	 중첩구문내 RowBound 사용을 허용	 true | false	 False
mapUnderscoreToCamelCase	 전통적인 데이터베이스 칼럼명 형태인 A_COLUMN을 CamelCase형태의 자바 프로퍼티명 형태인 aColumn으로 자동으로 매핑하도록 함	 true | false	 False
localCacheScope	 MyBatis uses local cache to prevent circular references and speed up repeated nested queries. By default (SESSION) all queries executed during a session are cached. If localCacheScope=STATEMENT local session will be used just for statement execution, no data will be shared between two different calls to the same SqlSession.	 SESSION | STATEMENT	 SESSION
jdbcTypeForNull	 Specifies the JDBC type for null values when no specific JDBC type was provided for the parameter. Some drivers require specifying the column JDBC type but others work with generic values like NULL, VARCHAR or OTHER.	 JdbcType enumeration. Most common are: NULL, VARCHAR and OTHER	 OTHER
lazyLoadTriggerMethods	 Specifies which Object's methods trigger a lazy load	 A method name list separated by commas	 equals,clone,hashCode,toString
defaultScriptingLanguage	 Specifies the language used by default for dynamic SQL generation.	 A type alias or fully qualified class name.	 org.apache.ibatis.scripting.xmltags.XMLDynamicLanguageDriver
callSettersOnNulls	 Specifies if setters or map's put method will be called when a retrieved value is null. It is useful when you rely on Map.keySet() or null value initialization. Note primitives such as (int,boolean,etc.) will not be set to null.	 true | false	 false
logPrefix	 Specifies the prefix string that MyBatis will add to the logger names.	 Any String	 Not set
logImpl	 Specifies which logging implementation MyBatis should use. If this setting is not present logging implementation will be autodiscovered.	 SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING	 Not set
proxyFactory	 Specifies the proxy tool that MyBatis will use for creating lazy loading capable objects.	 CGLIB | JAVASSIST	 CGLIB

// 예제...
<settings>
  <setting name="cacheEnabled" value="true"/>
  <setting name="lazyLoadingEnabled" value="true"/>
  <setting name="multipleResultSetsEnabled" value="true"/>
  <setting name="useColumnLabel" value="true"/>
  <setting name="useGeneratedKeys" value="false"/>
  <setting name="autoMappingBehavior" value="PARTIAL"/>
  <setting name="defaultExecutorType" value="SIMPLE"/>
  <setting name="defaultStatementTimeout" value="25"/>
  <setting name="safeRowBoundsEnabled" value="false"/>
  <setting name="mapUnderscoreToCamelCase" value="false"/>
  <setting name="localCacheScope" value="SESSION"/>
  <setting name="jdbcTypeForNull" value="OTHER"/>
  <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
</settings>
 -->
 
 
<configuration>
	<settings>
		<setting name="cacheEnabled" value="false" />
		<setting name="useGeneratedKeys" value="true" />
		<setting name="defaultExecutorType" value="REUSE" />
		<setting name="jdbcTypeForNull" value="NULL"/><!-- Tibero ONLY OTHER VARCHAR NULL -->
		
		<setting name="callSettersOnNulls" value="true"/><!-- this means that null result is included and pass it to client as JSON -->
	</settings>
	
	<typeAliases>
		<typeAlias alias="roleManageVO"     type="egovframework.com.sec.rmt.service.RoleManageVO" />
		<typeAlias alias="roleManage"       type="egovframework.com.sec.rmt.service.RoleManage" />
		<typeAlias alias="comDefaultCodeVO" type="i2c.cmm.vo.ComDefaultCodeVO"/>
	</typeAliases>	
	
	<typeHandlers>
		<typeHandler handler="org.apache.ibatis.type.InstantTypeHandler" />
		<typeHandler handler="org.apache.ibatis.type.LocalDateTimeTypeHandler" />
		<typeHandler handler="org.apache.ibatis.type.LocalDateTypeHandler" />
		<typeHandler handler="org.apache.ibatis.type.LocalTimeTypeHandler" />
		<typeHandler handler="org.apache.ibatis.type.OffsetDateTimeTypeHandler" />
		<typeHandler handler="org.apache.ibatis.type.OffsetTimeTypeHandler" />
		<typeHandler handler="org.apache.ibatis.type.ZonedDateTimeTypeHandler" />
	</typeHandlers>
	
	<plugins>
		<!-- 
		* required interceptor, must be existed
		1. supportWindowFunction : [true|false], true(Oracle, Tibero, PostgreSQL), false(MySQL, MariaDB, etc .., they do not support the window function.)
		 -->
		<plugin interceptor="i2c.cmm.interceptor.PropertiesInterceptor">
			<property name="supportWindowFunction" value="true" />
		</plugin>
		
		<plugin interceptor="i2c.cmm.interceptor.I2cMapperPageInterceptor">			
		</plugin>
	</plugins>
</configuration>