<?xml version="1.0" encoding="utf-8"?>
<sqlMap namespace="Other" >

	<resultMap id="other-result"  class="Other" >
		<result property="Int"		column="Other_Int"/>
		<result property="Long"		column="Other_Long"/>
		<result property="Bool"		column="Other_Bit"/>	
		<result property="Bool2"	column="Other_String" typeHandler="OuiNonBool"/>		
	</resultMap>
	
	<resultMap id="A-result"  class="A" >
		<result property="Id"		column="A_ID"/>
		<result property="Libelle"	column="A_Libelle"/>
		<result property="B"		resultMapping="B-result"/>
		<result property="E"		resultMapping="E-result"/>
		<result property="F"		resultMapping="F-result"/>
	</resultMap>
		
	<resultMap id="B-result"  class="B" >
		<result property="Id"		column="B_ID"/>
		<result property="Libelle"	column="B_Libelle"/>
		<result property="C"		resultMapping="C-result"/>
		<result property="D"		resultMapping="D-result"/>
	</resultMap>
			
	<resultMap id="C-result"  class="C" >
		<result property="Id"		column="C_ID"/>
		<result property="Libelle"	column="C_Libelle"/>
	</resultMap>
	
	<resultMap id="D-result"  class="D" >
		<result property="Id"		column="D_ID"/>
		<result property="Libelle"	column="D_Libelle"/>
	</resultMap>

	<resultMap id="E-result"  class="E" >
		<result property="Id"		column="E_ID"/>
		<result property="Libelle"	column="E_Libelle"/>
	</resultMap>	

	<resultMap id="F-result"  class="F" >
		<result property="Id"		column="F_ID"/>
		<result property="Libelle"	column="F_Libelle"/>
	</resultMap>

	<select id="SelectComplexJoined" resultMap="A-result">
	SELECT     
		A.Id AS A_ID,
		A.A_Libelle AS A_Libelle, 
		B.ID AS B_ID,
		B.B_Libelle AS B_Libelle,
		C.ID AS C_ID,
		C.C_Libelle AS C_Libelle,
		D.ID AS D_ID,
		D.D_Libelle AS D_Libelle,
		E.ID AS E_ID,
		E.E_Libelle AS E_Libelle,
		F.ID AS F_ID,
		F.F_Libelle AS F_Libelle 
		FROM         A 
		LEFT OUTER JOIN B ON A.B_ID = B.ID 
		LEFT OUTER JOIN C ON B.C_ID = C.ID
		LEFT OUTER JOIN D ON B.D_ID = D.ID
		LEFT OUTER JOIN E ON A.E_ID = E.ID
		LEFT OUTER JOIN F ON A.F_ID = F.ID
	</select>	
	<statement id="DynamicSelectByIntLong" 
		parameterClass="array" 
		resultMap="other-result">
		select
			Other_Int,
			Other_Long,
			Other_Bit, 
			Other_String
		from Others  
		<dynamic prepend="WHERE"> 
			<isNotEqual prepend="AND" property="year" compareValue="0"> 
			Other_Int = #year#  
			</isNotEqual> 
			 
			<isNotEqual prepend="AND" property="areaid" compareValue="0"> 
			Other_Long = #areaid# 
			</isNotEqual>  
		</dynamic> 
	</statement>

	<statement id="DynamicSelectByBool" 
		parameterClass="Other" 
		resultMap="other-result">
		select
			Other_Int,
			Other_Long,
			Other_Bit, 
			Other_String
		from Others  
		Where Other_Bit = #Bool# 
	</statement>

	<statement id="InsertBool" 
		parameterClass="Other">
		Insert into Others
			( Other_Int, Other_Long, Other_Bit, Other_String )
		values
		( #Int#, #Long#, #Bool#, 'Yes')
	</statement>			
	
	<statement id="InsertCustomTypeHandler" 
		parameterMap="other-insert-params">
		Insert into Others
			( Other_Int, Other_Long, Other_Bit, Other_String  )
		values
		( ?, ?, ?, ?)
	</statement>
	
	<statement id="SelectByInt" 
		parameterClass="int" 
		resultMap="other-result">
		select
			Other_Int,
			Other_Long,
			Other_Bit, 
			Other_String
		from Others  
		Where Other_Int = #value#
	</statement>

	<statement id="InsertInlineCustomTypeHandlerV1" 
		parameterClass="Other">
		Insert into Others
			( Other_Int, Other_Long, Other_Bit, Other_String  )
		values
		( #Int#, #Long#, #Bool#, #Bool2,type=bool,dbType=Varchar#)
	</statement>
	
	<statement id="InsertInlineCustomTypeHandlerV2" 
		parameterClass="Other">
		Insert into Others
			( Other_Int, Other_Long, Other_Bit, Other_String  )
		values
		( #Int#, #Long#, #Bool#, #Bool2,typeHandler=OuiNonBool#)
	</statement>				

	<parameterMap id="other-insert-params">
		<parameter property="Int" />
		<parameter property="Long" />
		<parameter property="Bool" />			
		<parameter property="Bool2" typeHandler="OuiNonBool"/>
	</parameterMap>
	
	
	<statement id="SelectByIntV1" 
		parameterClass="int" 
		resultMap="other-result-V1">
		select
			Other_Int,
			Other_Long,
			Other_Bit, 
			Other_String
		from Others  
		Where Other_Int = #value#
	</statement>


	<resultMap id="other-result-V1"  class="Other" >
		<result property="Int"		column="Other_Int"/>
		<result property="Long"		column="Other_Long"/>
		<result property="Bool"		column="Other_Bit"/>
		<result property="Bool2"	column="Other_String" />
	</resultMap>

</sqlMap>