一、添加Provider.config
<?xml version="1.0" encoding="utf-8"?> <providers xmlns="http://ibatis.apache.org/providers" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <clear/> <provider name="sqlServer1.0" description="Microsoft SQL Server 7.0/2000, provider V1.0.3300.0 in framework .NET V1.0" enabled="true" assemblyName="System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" connectionClass="System.Data.SqlClient.SqlConnection" commandClass="System.Data.SqlClient.SqlCommand" parameterClass="System.Data.SqlClient.SqlParameter" parameterDbTypeClass="System.Data.SqlDbType" parameterDbTypeProperty="SqlDbType" dataAdapterClass="System.Data.SqlClient.SqlDataAdapter" commandBuilderClass="System.Data.SqlClient.SqlCommandBuilder" usePositionalParameters="false" useParameterPrefixInSql="true" useParameterPrefixInParameter="true" parameterPrefix="@"/> <provider name="sqlServer1.1" description="Microsoft SQL Server 7.0/2000, provider V1.0.5000.0 in framework .NET V1.1" enabled="true" default="true" assemblyName="System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" connectionClass="System.Data.SqlClient.SqlConnection" commandClass="System.Data.SqlClient.SqlCommand" parameterClass="System.Data.SqlClient.SqlParameter" parameterDbTypeClass="System.Data.SqlDbType" parameterDbTypeProperty="SqlDbType" dataAdapterClass="System.Data.SqlClient.SqlDataAdapter" commandBuilderClass="System.Data.SqlClient.SqlCommandBuilder" usePositionalParameters="false" useParameterPrefixInSql="true" useParameterPrefixInParameter="true" parameterPrefix="@"/> <provider name="sqlServer2.0" enabled="true" description="Microsoft SQL Server 2005, provider V2.0.50215.0 in framework .NET V2.0" assemblyName="System.Data, Version=2.0.50215.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" connectionClass="System.Data.SqlClient.SqlConnection" commandClass="System.Data.SqlClient.SqlCommand" parameterClass="System.Data.SqlClient.SqlParameter" parameterDbTypeClass="System.Data.SqlDbType" parameterDbTypeProperty="SqlDbType" dataAdapterClass="System.Data.SqlClient.SqlDataAdapter" commandBuilderClass=" System.Data.SqlClient.SqlCommandBuilder" usePositionalParameters = "false" useParameterPrefixInSql = "true" useParameterPrefixInParameter = "true" parameterPrefix="@" /> <provider name="sqlServer4.0" enabled="true" default="true" description="Microsoft SQL Server, provider V4.0.0.0 in framework .NET V4.0" assemblyName="System.Data, Version=4.0.0.0, Culture=Neutral, PublicKeyToken=b77a5c561934e089" connectionClass="System.Data.SqlClient.SqlConnection" commandClass="System.Data.SqlClient.SqlCommand" parameterClass="System.Data.SqlClient.SqlParameter" parameterDbTypeClass="System.Data.SqlDbType" parameterDbTypeProperty="SqlDbType" dataAdapterClass="System.Data.SqlClient.SqlDataAdapter" commandBuilderClass=" System.Data.SqlClient.SqlCommandBuilder" usePositionalParameters = "false" useParameterPrefixInSql = "true" useParameterPrefixInParameter = "true" parameterPrefix="@" allowMARS="true" /> <provider name="OleDb1.1" description="OleDb, provider V1.0.5000.0 in framework .NET V1.1" enabled="true" assemblyName="System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" connectionClass="System.Data.OleDb.OleDbConnection" commandClass="System.Data.OleDb.OleDbCommand" parameterClass="System.Data.OleDb.OleDbParameter" parameterDbTypeClass="System.Data.OleDb.OleDbType" parameterDbTypeProperty="OleDbType" dataAdapterClass="System.Data.OleDb.OleDbDataAdapter" commandBuilderClass="System.Data.OleDb.OleDbCommandBuilder" usePositionalParameters="true" useParameterPrefixInSql="false" useParameterPrefixInParameter="false" parameterPrefix=""/> <provider name="Odbc1.1" description="Odbc, provider V1.0.5000.0 in framework .NET V1.1" enabled="true" assemblyName="System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" connectionClass="System.Data.Odbc.OdbcConnection" commandClass="System.Data.Odbc.OdbcCommand" parameterClass="System.Data.Odbc.OdbcParameter" parameterDbTypeClass="System.Data.Odbc.OdbcType" parameterDbTypeProperty="OdbcType" dataAdapterClass="System.Data.Odbc.OdbcDataAdapter" commandBuilderClass="System.Data.Odbc.OdbcCommandBuilder" usePositionalParameters="true" useParameterPrefixInSql="false" useParameterPrefixInParameter="false" parameterPrefix="@"/> <provider name="oracle9.2" description="Oracle, Oracle provider V9.2.0.401" enabled="false" assemblyName="Oracle.DataAccess, Version=9.2.0.401, Culture=neutral, PublicKeyToken=89b483f429c47342" connectionClass="Oracle.DataAccess.Client.OracleConnection" commandClass="Oracle.DataAccess.Client.OracleCommand" parameterClass="Oracle.DataAccess.Client.OracleParameter" parameterDbTypeClass="Oracle.DataAccess.Client.OracleDbType" parameterDbTypeProperty="OracleDbType" dataAdapterClass="Oracle.DataAccess.Client.OracleDataAdapter" commandBuilderClass="Oracle.DataAccess.Client.OracleCommandBuilder" usePositionalParameters="false" useParameterPrefixInSql="true" useParameterPrefixInParameter="false" parameterPrefix=":" useDeriveParameters="false"/> <provider name="oracle10.1" description="Oracle, oracle provider V10.1.0.301" enabled="false" assemblyName="Oracle.DataAccess, Version=10.1.0.301, Culture=neutral, PublicKeyToken=89b483f429c47342" connectionClass="Oracle.DataAccess.Client.OracleConnection" commandClass="Oracle.DataAccess.Client.OracleCommand" parameterClass="Oracle.DataAccess.Client.OracleParameter" parameterDbTypeClass="Oracle.DataAccess.Client.OracleDbType" parameterDbTypeProperty="OracleDbType" dataAdapterClass="Oracle.DataAccess.Client.OracleDataAdapter" commandBuilderClass="Oracle.DataAccess.Client.OracleCommandBuilder" usePositionalParameters="true" useParameterPrefixInSql="true" useParameterPrefixInParameter="true" parameterPrefix=":" useDeriveParameters="false"/> <provider name="oracleClient1.0" description="Oracle, Microsoft provider V1.0.5000.0" enabled="false" assemblyName="System.Data.OracleClient, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" connectionClass="System.Data.OracleClient.OracleConnection" commandClass="System.Data.OracleClient.OracleCommand" parameterClass="System.Data.OracleClient.OracleParameter" parameterDbTypeClass="System.Data.OracleClient.OracleType" parameterDbTypeProperty="OracleType" dataAdapterClass="System.Data.OracleClient.OracleDataAdapter" commandBuilderClass="System.Data.OracleClient.OracleCommandBuilder" usePositionalParameters="false" useParameterPrefixInSql="true" useParameterPrefixInParameter="false" parameterPrefix=":"/> <provider name="ByteFx" description="MySQL, ByteFx provider V0.7.6.15073" enabled="false" assemblyName="ByteFX.MySqlClient, Version=0.7.6.15073, Culture=neutral, PublicKeyToken=f2fef6fed1732fc1" connectionClass="ByteFX.Data.MySqlClient.MySqlConnection" commandClass="ByteFX.Data.MySqlClient.MySqlCommand" parameterClass="ByteFX.Data.MySqlClient.MySqlParameter" parameterDbTypeClass="ByteFX.Data.MySqlClient.MySqlDbType" parameterDbTypeProperty="MySqlDbType" dataAdapterClass="ByteFX.Data.MySqlClient.MySqlDataAdapter" commandBuilderClass="ByteFX.Data.MySqlClient.MySqlCommandBuilder" usePositionalParameters="false" useParameterPrefixInSql="true" useParameterPrefixInParameter="true" parameterPrefix="@"/> <provider name="MySql" description="MySQL, MySQL provider V1.0.5.13785" enabled="false" assemblyName="MySql.Data, Version=1.0.5.13785, Culture=neutral, PublicKeyToken=c5687fc88969c44d" connectionClass="MySql.Data.MySqlClient.MySqlConnection" commandClass="MySql.Data.MySqlClient.MySqlCommand" parameterClass="MySql.Data.MySqlClient.MySqlParameter" parameterDbTypeClass="MySql.Data.MySqlClient.MySqlDbType" parameterDbTypeProperty="MySqlDbType" dataAdapterClass="MySql.Data.MySqlClient.MySqlDataAdapter" commandBuilderClass="MySql.Data.MySqlClient.MySqlCommandBuilder" usePositionalParameters="false" useParameterPrefixInSql="true" useParameterPrefixInParameter="true" parameterPrefix="?"/> <provider name="SQLite3" description="SQLite, SQLite.NET provider V0.21.1869.3794" enabled="false" assemblyName="SQLite.NET, Version=0.21.1869.3794, Culture=neutral, PublicKeyToken=c273bd375e695f9c" connectionClass="Finisar.SQLite.SQLiteConnection" commandClass="Finisar.SQLite.SQLiteCommand" parameterClass="Finisar.SQLite.SQLiteParameter" parameterDbTypeClass="System.Data.DbType, System.Data" parameterDbTypeProperty="DbType" dataAdapterClass="Finisar.SQLite.SQLiteDataAdapter" commandBuilderClass="Finisar.SQLite.SQLiteCommandBuilder" usePositionalParameters="false" useParameterPrefixInSql="true" useParameterPrefixInParameter="true" parameterPrefix="@" setDbParameterPrecision="false" setDbParameterScale="false"/> <provider name="Firebird1.7" description="Firebird, Firebird SQL .NET provider V1.7.0.33200" enabled="false" assemblyName="FirebirdSql.Data.Firebird, Version=1.7.0.33200, Culture=neutral, PublicKeyToken=fa843d180294369d" connectionClass="FirebirdSql.Data.Firebird.FbConnection" commandClass="FirebirdSql.Data.Firebird.FbCommand" parameterClass="FirebirdSql.Data.Firebird.FbParameter" parameterDbTypeClass="FirebirdSql.Data.Firebird.FbDbType" parameterDbTypeProperty="FbDbType" dataAdapterClass="FirebirdSql.Data.Firebird.FbDataAdapter" commandBuilderClass="FirebirdSql.Data.Firebird.FbCommandBuilder" usePositionalParameters="false" useParameterPrefixInSql="true" useParameterPrefixInParameter="true" parameterPrefix="@"/> <provider name="PostgreSql0.7" description="PostgreSql, Npgsql provider V0.7.0.0" enabled="false" assemblyName="Npgsql, Version=0.7.0.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7" connectionClass="Npgsql.NpgsqlConnection" commandClass="Npgsql.NpgsqlCommand" parameterClass="Npgsql.NpgsqlParameter" parameterDbTypeClass="NpgsqlTypes.NpgsqlDbType" parameterDbTypeProperty="NpgsqlDbType" dataAdapterClass="Npgsql.NpgsqlDataAdapter" commandBuilderClass="Npgsql.NpgsqlCommandBuilder" usePositionalParameters="false" useParameterPrefixInSql="true" useParameterPrefixInParameter="true" parameterPrefix=":"/> <provider name="PostgreSql0.7.1" description="PostgreSql, Npgsql provider V0.7.1.0" enabled="false" assemblyName="Npgsql, Version=0.7.1.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7" connectionClass="Npgsql.NpgsqlConnection" commandClass="Npgsql.NpgsqlCommand" parameterClass="Npgsql.NpgsqlParameter" parameterDbTypeClass="NpgsqlTypes.NpgsqlDbType" parameterDbTypeProperty="NpgsqlDbType" dataAdapterClass="Npgsql.NpgsqlDataAdapter" commandBuilderClass="Npgsql.NpgsqlCommandBuilder" usePositionalParameters="false" useParameterPrefixInSql="true" useParameterPrefixInParameter="true" parameterPrefix=":"/> <provider name="iDb2.10" description="IBM DB2 Provider, V 10.0" enabled="false" assemblyName="IBM.Data.DB2.iSeries, Version=10.0.0.0,Culture=neutral, PublicKeyToken=9cdb2ebfb1f93a26, Custom=null" connectionClass="IBM.Data.DB2.iSeries.iDB2Connection" commandClass="IBM.Data.DB2.iSeries.iDB2Command" parameterClass="IBM.Data.DB2.iSeries.iDB2Parameter" parameterDbTypeClass="IBM.Data.DB2.iSeries.iDB2DbType" parameterDbTypeProperty="iDB2DbType" dataAdapterClass="IBM.Data.DB2.iSeries.iDB2DataAdapter" commandBuilderClass="IBM.Data.DB2.iSeries.iDB2CommandBuilder" usePositionalParameters="true" useParameterPrefixInSql="false" useParameterPrefixInParameter="false" parameterPrefix=""/> <provider name="Informix" description="Informix NET Provider, 2.81.0.0" enabled="false" assemblyName="IBM.Data.Informix, Version=2.81.0.0, Culture=neutral, PublicKeyToken=7c307b91aa13d208" connectionClass="IBM.Data.Informix.IfxConnection" commandClass="IBM.Data.Informix.IfxCommand" parameterClass="IBM.Data.Informix.IfxParameter" parameterDbTypeClass="IBM.Data.Informix.IfxType" parameterDbTypeProperty="IfxType" dataAdapterClass="IBM.Data.Informix.IfxDataAdapter" commandBuilderClass="IBM.Data.Informix.IfxCommandBuilder" usePositionalParameters = "true" useParameterPrefixInSql = "false" useParameterPrefixInParameter = "false" useDeriveParameters="false" /> </providers>
二、添加SqlMapConfig.xsd
<?xml version="1.0" encoding="UTF-8"?> <xs:schema targetNamespace="http://ibatis.apache.org/dataMapper" elementFormDefault="qualified" xmlns:mstns="http://tempuri.org/XMLSchema.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://ibatis.apache.org/dataMapper" xmlns:vs="http://schemas.microsoft.com/Visual-Studio-Intellisense" vs:friendlyname="iBATIS.NET DataMapper Configuration Schema" vs:ishtmlschema="false" vs:iscasesensitive="true" vs:requireattributequotes="true" vs:defaultnamespacequalifier="" vs:defaultnsprefix=""> <xs:annotation> <xs:documentation> DataMapper XML Schema Definition </xs:documentation> </xs:annotation> <xs:element name="typeAlias"> <xs:complexType> <xs:attribute name="alias" type="xs:string" use="required"/> <xs:attribute name="type" type="xs:string" use="required"/> </xs:complexType> </xs:element> <xs:element name="typeHandler"> <xs:complexType> <xs:attribute name="type" type="xs:string"/> <xs:attribute name="dbType" type="xs:string"/> <xs:attribute name="callback" type="xs:string"/> </xs:complexType> </xs:element> <xs:element name="typeHandlers"> <xs:complexType> <xs:sequence> <xs:element ref="typeHandler" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="alias"> <xs:complexType> <xs:sequence> <xs:element ref="typeAlias" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="dataSource"> <xs:complexType> <xs:attribute name="name" type="xs:string" use="required"/> <xs:attribute name="connectionString" type="xs:string" use="required"/> </xs:complexType> </xs:element> <xs:element name="database"> <xs:complexType> <xs:sequence> <xs:element ref="provider"/> <xs:element ref="dataSource"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="properties"> <xs:complexType> <xs:sequence> <xs:element ref="property" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="resource" type="xs:string"/> <xs:attribute name="url" type="xs:string"/> <xs:attribute name="embedded" type="xs:string"/> </xs:complexType> </xs:element> <xs:element name="property"> <xs:complexType> <xs:attribute name="resource" type="xs:string"/> <xs:attribute name="url" type="xs:string"/> <xs:attribute name="embedded" type="xs:string"/> <xs:attribute name="key" type="xs:string"/> <xs:attribute name="value" type="xs:string"/> </xs:complexType> </xs:element> <xs:element name="provider"> <xs:complexType> <xs:attribute name="name" type="xs:string" use="required"/> </xs:complexType> </xs:element> <xs:element name="setting"> <xs:complexType> <xs:attribute name="useStatementNamespaces" type="xs:string" default="false"/> <xs:attribute name="cacheModelsEnabled" type="xs:string"/> <xs:attribute name="validateSqlMap" type="xs:string" default="false"/> <xs:attribute name="useEmbedStatementParams" type="xs:boolean" default="false"/> <xs:attribute name="useReflectionOptimizer" type="xs:boolean" default="true"/> </xs:complexType> </xs:element> <xs:element name="settings"> <xs:complexType> <xs:sequence> <xs:element ref="setting" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="sqlMap"> <xs:complexType> <xs:attribute name="resource" type="xs:string"/> <xs:attribute name="url" type="xs:string"/> <xs:attribute name="embedded" type="xs:string"/> </xs:complexType> </xs:element> <xs:element name="providers"> <xs:complexType> <xs:attribute name="resource" type="xs:string"/> <xs:attribute name="url" type="xs:string"/> <xs:attribute name="embedded" type="xs:string"/> </xs:complexType> </xs:element> <xs:annotation> <xs:documentation> The document root. </xs:documentation> </xs:annotation> <xs:element name="sqlMapConfig"> <xs:complexType mixed="true"> <xs:sequence> <xs:element ref="properties" minOccurs="0"/> <xs:element ref="settings" minOccurs="0"/> <xs:element ref="providers" minOccurs="0"/> <xs:element ref="database" minOccurs="0"/> <xs:element ref="alias" minOccurs="0"/> <xs:element ref="typeHandlers" minOccurs="0"/> <xs:element ref="sqlMaps" minOccurs="0"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="sqlMaps"> <xs:complexType> <xs:sequence> <xs:element ref="sqlMap" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
三、添加SqlMap.xsd
<?xml version="1.0" encoding="UTF-8"?> <xs:schema targetNamespace="http://ibatis.apache.org/mapping" elementFormDefault="qualified" xmlns:mstns="http://tempuri.org/XMLSchema.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://ibatis.apache.org/mapping" xmlns:vs="http://schemas.microsoft.com/Visual-Studio-Intellisense" vs:friendlyname="iBATIS.NET mapping file Configuration Schema" vs:ishtmlschema="false" vs:iscasesensitive="true" vs:requireattributequotes="true" vs:defaultnamespacequalifier="" vs:defaultnsprefix="" > <xs:annotation> <xs:documentation> Mapping XML Schema Definition </xs:documentation> </xs:annotation> <xs:element name="alias"> <xs:complexType> <xs:sequence> <xs:element ref="typeAlias" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="discriminator"> <xs:complexType> <xs:attribute name="column" type="xs:string"/> <xs:attribute name="type" type="xs:string"/> <xs:attribute name="typeHandler" type="xs:string"/> </xs:complexType> </xs:element> <xs:element name="subMap"> <xs:complexType> <xs:attribute name="value" use="required" type="xs:string"/> <xs:attribute name="resultMapping" use="required" type="xs:string"/> </xs:complexType> </xs:element> <xs:element name="cacheModel"> <xs:complexType> <xs:sequence maxOccurs="unbounded"> <xs:element ref="flushInterval" minOccurs="0"/> <xs:element ref="flushOnExecute" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="property" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="id" type="xs:string" use="required"/> <xs:attribute name="serialize" type="xs:string" default="false"/> <xs:attribute name="readOnly" type="xs:string" default="true"/> <xs:attribute name="implementation" use="required"> <xs:simpleType> <xs:restriction base="xs:NMTOKEN"> <xs:enumeration value="LRU"/> <xs:enumeration value="MEMORY"/> <xs:enumeration value="FIFO"/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:complexType> </xs:element> <xs:element name="cacheModels"> <xs:complexType> <xs:sequence> <xs:element ref="cacheModel" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="procedure"> <xs:complexType mixed="true"> <xs:attribute name="id" type="xs:string" use="required"/> <xs:attribute name="parameterMap" type="xs:string" /> <xs:attribute name="resultMap" type="xs:string"/> <xs:attribute name="resultClass" type="xs:string"/> <xs:attribute name="cacheModel" type="xs:string"/> <xs:attribute name="listClass" type="xs:string"/> </xs:complexType> </xs:element> <xs:element name="delete"> <xs:complexType mixed="true"> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element ref="include"/> <xs:element ref="generate"/> <xs:element ref="isEmpty"/> <xs:element ref="isEqual"/> <xs:element ref="isGreaterEqual"/> <xs:element ref="isGreaterThan"/> <xs:element ref="isLessThan"/> <xs:element ref="isLessEqual"/> <xs:element ref="isNotEmpty"/> <xs:element ref="isNotEqual"/> <xs:element ref="isNotNull"/> <xs:element ref="isNotParameterPresent"/> <xs:element ref="isNotPropertyAvailable"/> <xs:element ref="isNull"/> <xs:element ref="isParameterPresent"/> <xs:element ref="isPropertyAvailable"/> <xs:element ref="iterate"/> </xs:choice> <xs:attribute name="id" use="required"/> <xs:attribute name="parameterMap" type="xs:string"/> <xs:attribute name="parameterClass" type="xs:string"/> <xs:attribute name="extends" type="xs:string"/> <xs:attribute name="remapResults"> <xs:simpleType> <xs:restriction base="xs:NMTOKEN"> <xs:enumeration value="false"/> <xs:enumeration value="true"/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:complexType> </xs:element> <xs:element name="include"> <xs:complexType mixed="true"> <xs:attribute name="refid" type="xs:string"/> </xs:complexType> </xs:element> <xs:element name="dynamic"> <xs:complexType mixed="true"> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element ref="isEmpty"/> <xs:element ref="isEqual"/> <xs:element ref="isGreaterEqual"/> <xs:element ref="isGreaterThan"/> <xs:element ref="isLessThan"/> <xs:element ref="isLessEqual"/> <xs:element ref="isNotEmpty"/> <xs:element ref="isNotEqual"/> <xs:element ref="isNotNull"/> <xs:element ref="isNotParameterPresent"/> <xs:element ref="isNotPropertyAvailable"/> <xs:element ref="isNull"/> <xs:element ref="isParameterPresent"/> <xs:element ref="isPropertyAvailable"/> <xs:element ref="iterate"/> </xs:choice> <xs:attribute name="prepend" type="xs:string"/> </xs:complexType> </xs:element> <xs:element name="flushInterval"> <xs:complexType> <xs:attribute name="milliseconds" type="xs:byte"/> <xs:attribute name="seconds" type="xs:byte"/> <xs:attribute name="minutes" type="xs:byte"/> <xs:attribute name="hours" type="xs:byte"/> </xs:complexType> </xs:element> <xs:element name="flushOnExecute"> <xs:complexType> <xs:attribute name="statement" type="xs:string" use="required"/> </xs:complexType> </xs:element> <xs:element name="generate"> <xs:complexType> <xs:attribute name="table" type="xs:string" use="required"/> <xs:attribute name="by" type="xs:string"/> </xs:complexType> </xs:element> <xs:element name="insert"> <xs:complexType mixed="true"> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element ref="include"/> <xs:element ref="selectKey"/> <xs:element ref="generate"/> <xs:element ref="dynamic"/> <xs:element ref="isEmpty"/> <xs:element ref="isEqual"/> <xs:element ref="isGreaterEqual"/> <xs:element ref="isGreaterThan"/> <xs:element ref="isLessThan"/> <xs:element ref="isLessEqual"/> <xs:element ref="isNotEmpty"/> <xs:element ref="isNotEqual"/> <xs:element ref="isNotNull"/> <xs:element ref="isNotParameterPresent"/> <xs:element ref="isNotPropertyAvailable"/> <xs:element ref="isNull"/> <xs:element ref="isParameterPresent"/> <xs:element ref="isPropertyAvailable"/> <xs:element ref="iterate"/> </xs:choice> <xs:attribute name="id" type="xs:string" use="required"/> <xs:attribute name="parameterClass" type="xs:string"/> <xs:attribute name="parameterMap" type="xs:string"/> <xs:attribute name="resultClass" type="xs:string"/> <xs:attribute name="remapResults"> <xs:simpleType> <xs:restriction base="xs:NMTOKEN"> <xs:enumeration value="false"/> <xs:enumeration value="true"/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:complexType> </xs:element> <xs:element name="isNotParameterPresent"> <xs:complexType mixed="true"> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element ref="isEmpty"/> <xs:element ref="isEqual"/> <xs:element ref="isGreaterEqual"/> <xs:element ref="isGreaterThan"/> <xs:element ref="isLessThan"/> <xs:element ref="isLessEqual"/> <xs:element ref="isNotEmpty"/> <xs:element ref="isNotEqual"/> <xs:element ref="isNotNull"/> <xs:element ref="isNotParameterPresent"/> <xs:element ref="isNotPropertyAvailable"/> <xs:element ref="isNull"/> <xs:element ref="isParameterPresent"/> <xs:element ref="isPropertyAvailable"/> <xs:element ref="iterate"/> </xs:choice> <xs:attribute name="prepend" type="xs:string"/> </xs:complexType> </xs:element> <xs:element name="isNotPropertyAvailable"> <xs:complexType mixed="true"> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element ref="isEmpty"/> <xs:element ref="isEqual"/> <xs:element ref="isGreaterEqual"/> <xs:element ref="isGreaterThan"/> <xs:element ref="isLessThan"/> <xs:element ref="isLessEqual"/> <xs:element ref="isNotEmpty"/> <xs:element ref="isNotEqual"/> <xs:element ref="isNotNull"/> <xs:element ref="isNotParameterPresent"/> <xs:element ref="isNotPropertyAvailable"/> <xs:element ref="isNull"/> <xs:element ref="isParameterPresent"/> <xs:element ref="isPropertyAvailable"/> <xs:element ref="iterate"/> </xs:choice> <xs:attribute name="prepend" type="xs:string"/> <xs:attribute name="property" type="xs:string" use="required"/> </xs:complexType> </xs:element> <xs:element name="isEmpty"> <xs:complexType mixed="true"> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element ref="isEmpty"/> <xs:element ref="isEqual"/> <xs:element ref="isGreaterEqual"/> <xs:element ref="isGreaterThan"/> <xs:element ref="isLessThan"/> <xs:element ref="isLessEqual"/> <xs:element ref="isNotEmpty"/> <xs:element ref="isNotEqual"/> <xs:element ref="isNotNull"/> <xs:element ref="isNotParameterPresent"/> <xs:element ref="isNotPropertyAvailable"/> <xs:element ref="isNull"/> <xs:element ref="isParameterPresent"/> <xs:element ref="isPropertyAvailable"/> <xs:element ref="iterate"/> </xs:choice> <xs:attribute name="prepend" type="xs:string"/> <xs:attribute name="property" type="xs:string"/> </xs:complexType> </xs:element> <xs:element name="isEqual"> <xs:complexType mixed="true"> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element ref="isEmpty"/> <xs:element ref="isEqual"/> <xs:element ref="isGreaterEqual"/> <xs:element ref="isGreaterThan"/> <xs:element ref="isLessThan"/> <xs:element ref="isLessEqual"/> <xs:element ref="isNotEmpty"/> <xs:element ref="isNotEqual"/> <xs:element ref="isNotNull"/> <xs:element ref="isNotParameterPresent"/> <xs:element ref="isNotPropertyAvailable"/> <xs:element ref="isNull"/> <xs:element ref="isParameterPresent"/> <xs:element ref="isPropertyAvailable"/> <xs:element ref="iterate"/> </xs:choice> <xs:attribute name="prepend" type="xs:string"/> <xs:attribute name="property" type="xs:string"/> <xs:attribute name="compareProperty" type="xs:string"/> <xs:attribute name="compareValue" type="xs:string"/> </xs:complexType> </xs:element> <xs:element name="isNull"> <xs:complexType mixed="true"> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element ref="isEmpty"/> <xs:element ref="isEqual"/> <xs:element ref="isGreaterEqual"/> <xs:element ref="isGreaterThan"/> <xs:element ref="isLessThan"/> <xs:element ref="isLessEqual"/> <xs:element ref="isNotEmpty"/> <xs:element ref="isNotEqual"/> <xs:element ref="isNotNull"/> <xs:element ref="isNotParameterPresent"/> <xs:element ref="isNotPropertyAvailable"/> <xs:element ref="isNull"/> <xs:element ref="isParameterPresent"/> <xs:element ref="isPropertyAvailable"/> <xs:element ref="iterate"/> </xs:choice> <xs:attribute name="prepend" type="xs:string"/> <xs:attribute name="property" type="xs:string"/> </xs:complexType> </xs:element> <xs:element name="isGreaterEqual"> <xs:complexType mixed="true"> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element ref="isEmpty"/> <xs:element ref="isEqual"/> <xs:element ref="isGreaterEqual"/> <xs:element ref="isGreaterThan"/> <xs:element ref="isLessThan"/> <xs:element ref="isLessEqual"/> <xs:element ref="isNotEmpty"/> <xs:element ref="isNotEqual"/> <xs:element ref="isNotNull"/> <xs:element ref="isNotParameterPresent"/> <xs:element ref="isNotPropertyAvailable"/> <xs:element ref="isNull"/> <xs:element ref="isParameterPresent"/> <xs:element ref="isPropertyAvailable"/> <xs:element ref="iterate"/> </xs:choice> <xs:attribute name="prepend" type="xs:string"/> <xs:attribute name="property" type="xs:string"/> <xs:attribute name="compareProperty" type="xs:string"/> <xs:attribute name="compareValue" type="xs:string"/> </xs:complexType> </xs:element> <xs:element name="isGreaterThan"> <xs:complexType mixed="true"> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element ref="isEmpty"/> <xs:element ref="isEqual"/> <xs:element ref="isGreaterEqual"/> <xs:element ref="isGreaterThan"/> <xs:element ref="isLessThan"/> <xs:element ref="isLessEqual"/> <xs:element ref="isNotEmpty"/> <xs:element ref="isNotEqual"/> <xs:element ref="isNotNull"/> <xs:element ref="isNotParameterPresent"/> <xs:element ref="isNotPropertyAvailable"/> <xs:element ref="isNull"/> <xs:element ref="isParameterPresent"/> <xs:element ref="isPropertyAvailable"/> <xs:element ref="iterate"/> </xs:choice> <xs:attribute name="prepend" type="xs:string"/> <xs:attribute name="property" type="xs:string"/> <xs:attribute name="compareProperty" type="xs:string"/> <xs:attribute name="compareValue" type="xs:string"/> </xs:complexType> </xs:element> <xs:element name="isLessEqual"> <xs:complexType mixed="true"> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element ref="isEmpty"/> <xs:element ref="isEqual"/> <xs:element ref="isGreaterEqual"/> <xs:element ref="isGreaterThan"/> <xs:element ref="isLessThan"/> <xs:element ref="isLessEqual"/> <xs:element ref="isNotEmpty"/> <xs:element ref="isNotEqual"/> <xs:element ref="isNotNull"/> <xs:element ref="isNotParameterPresent"/> <xs:element ref="isNotPropertyAvailable"/> <xs:element ref="isNull"/> <xs:element ref="isParameterPresent"/> <xs:element ref="isPropertyAvailable"/> <xs:element ref="iterate"/> </xs:choice> <xs:attribute name="prepend" type="xs:string"/> <xs:attribute name="property" type="xs:string"/> <xs:attribute name="compareProperty" type="xs:string"/> <xs:attribute name="compareValue" type="xs:string"/> </xs:complexType> </xs:element> <xs:element name="isLessThan"> <xs:complexType mixed="true"> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element ref="isEmpty"/> <xs:element ref="isEqual"/> <xs:element ref="isGreaterEqual"/> <xs:element ref="isGreaterThan"/> <xs:element ref="isLessThan"/> <xs:element ref="isLessEqual"/> <xs:element ref="isNotEmpty"/> <xs:element ref="isNotEqual"/> <xs:element ref="isNotNull"/> <xs:element ref="isNotParameterPresent"/> <xs:element ref="isNotPropertyAvailable"/> <xs:element ref="isNull"/> <xs:element ref="isParameterPresent"/> <xs:element ref="isPropertyAvailable"/> <xs:element ref="iterate"/> </xs:choice> <xs:attribute name="prepend" type="xs:string"/> <xs:attribute name="property" type="xs:string"/> <xs:attribute name="compareProperty" type="xs:string"/> <xs:attribute name="compareValue" type="xs:string"/> </xs:complexType> </xs:element> <xs:element name="isNotEmpty"> <xs:complexType mixed="true"> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element ref="isEmpty"/> <xs:element ref="isEqual"/> <xs:element ref="isGreaterEqual"/> <xs:element ref="isGreaterThan"/> <xs:element ref="isLessThan"/> <xs:element ref="isLessEqual"/> <xs:element ref="isNotEmpty"/> <xs:element ref="isNotEqual"/> <xs:element ref="isNotNull"/> <xs:element ref="isNotParameterPresent"/> <xs:element ref="isNotPropertyAvailable"/> <xs:element ref="isNull"/> <xs:element ref="isParameterPresent"/> <xs:element ref="isPropertyAvailable"/> <xs:element ref="iterate"/> </xs:choice> <xs:attribute name="prepend" type="xs:string"/> <xs:attribute name="property" type="xs:string"/> </xs:complexType> </xs:element> <xs:element name="isNotEqual"> <xs:complexType mixed="true"> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element ref="isEmpty"/> <xs:element ref="isEqual"/> <xs:element ref="isGreaterEqual"/> <xs:element ref="isGreaterThan"/> <xs:element ref="isLessThan"/> <xs:element ref="isLessEqual"/> <xs:element ref="isNotEmpty"/> <xs:element ref="isNotEqual"/> <xs:element ref="isNotNull"/> <xs:element ref="isNotParameterPresent"/> <xs:element ref="isNotPropertyAvailable"/> <xs:element ref="isNull"/> <xs:element ref="isParameterPresent"/> <xs:element ref="isPropertyAvailable"/> <xs:element ref="iterate"/> </xs:choice> <xs:attribute name="prepend" type="xs:string"/> <xs:attribute name="property" type="xs:string"/> <xs:attribute name="compareProperty" type="xs:string"/> <xs:attribute name="compareValue" type="xs:string"/> </xs:complexType> </xs:element> <xs:element name="isNotNull"> <xs:complexType mixed="true"> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element ref="isEmpty"/> <xs:element ref="isEqual"/> <xs:element ref="isGreaterEqual"/> <xs:element ref="isGreaterThan"/> <xs:element ref="isLessThan"/> <xs:element ref="isLessEqual"/> <xs:element ref="isNotEmpty"/> <xs:element ref="isNotEqual"/> <xs:element ref="isNotNull"/> <xs:element ref="isNotParameterPresent"/> <xs:element ref="isNotPropertyAvailable"/> <xs:element ref="isNull"/> <xs:element ref="isParameterPresent"/> <xs:element ref="isPropertyAvailable"/> <xs:element ref="iterate"/> </xs:choice> <xs:attribute name="prepend" type="xs:string"/> <xs:attribute name="property" type="xs:string"/> </xs:complexType> </xs:element> <xs:element name="isParameterPresent"> <xs:complexType mixed="true"> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element ref="isEmpty"/> <xs:element ref="isEqual"/> <xs:element ref="isGreaterEqual"/> <xs:element ref="isGreaterThan"/> <xs:element ref="isLessThan"/> <xs:element ref="isLessEqual"/> <xs:element ref="isNotEmpty"/> <xs:element ref="isNotEqual"/> <xs:element ref="isNotNull"/> <xs:element ref="isNotParameterPresent"/> <xs:element ref="isNotPropertyAvailable"/> <xs:element ref="isNull"/> <xs:element ref="isParameterPresent"/> <xs:element ref="isPropertyAvailable"/> <xs:element ref="iterate"/> </xs:choice> <xs:attribute name="prepend" type="xs:string"/> </xs:complexType> </xs:element> <xs:element name="isPropertyAvailable"> <xs:complexType mixed="true"> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element ref="isEmpty"/> <xs:element ref="isEqual"/> <xs:element ref="isGreaterEqual"/> <xs:element ref="isGreaterThan"/> <xs:element ref="isLessThan"/> <xs:element ref="isLessEqual"/> <xs:element ref="isNotEmpty"/> <xs:element ref="isNotEqual"/> <xs:element ref="isNotNull"/> <xs:element ref="isNotParameterPresent"/> <xs:element ref="isNotPropertyAvailable"/> <xs:element ref="isNull"/> <xs:element ref="isParameterPresent"/> <xs:element ref="isPropertyAvailable"/> <xs:element ref="iterate"/> </xs:choice> <xs:attribute name="prepend" type="xs:string"/> <xs:attribute name="property" type="xs:string" use="required"/> </xs:complexType> </xs:element> <xs:element name="iterate"> <xs:complexType mixed="true"> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element ref="isEmpty"/> <xs:element ref="isEqual"/> <xs:element ref="isGreaterEqual"/> <xs:element ref="isGreaterThan"/> <xs:element ref="isLessThan"/> <xs:element ref="isLessEqual"/> <xs:element ref="isNotEmpty"/> <xs:element ref="isNotEqual"/> <xs:element ref="isNotNull"/> <xs:element ref="isNotParameterPresent"/> <xs:element ref="isNotPropertyAvailable"/> <xs:element ref="isNull"/> <xs:element ref="isParameterPresent"/> <xs:element ref="isPropertyAvailable"/> <xs:element ref="iterate"/> </xs:choice> <xs:attribute name="open" type="xs:string" use="required"/> <xs:attribute name="close" type="xs:string" use="required"/> <xs:attribute name="conjunction" type="xs:string" use="required"/> <xs:attribute name="property" type="xs:string"/> <xs:attribute name="prepend" type="xs:string"/> </xs:complexType> </xs:element> <xs:element name="parameter"> <xs:complexType> <xs:attribute name="property" type="xs:string" use="required"/> <xs:attribute name="column" type="xs:string"/> <xs:attribute name="nullValue" type="xs:string"/> <xs:attribute name="type" type="xs:string"/> <xs:attribute name="dbType" type="xs:string"/> <xs:attribute name="size" type="xs:string"/> <xs:attribute name="scale" type="xs:string"/> <xs:attribute name="precision" type="xs:string"/> <xs:attribute name="typeHandler" type="xs:string"/> <xs:attribute name="direction"> <xs:simpleType> <xs:restriction base="xs:NMTOKEN"> <xs:enumeration value="Input"/> <xs:enumeration value="Output"/> <xs:enumeration value="InputOutput"/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:complexType> </xs:element> <xs:element name="parameterMap"> <xs:complexType> <xs:sequence> <xs:element ref="parameter" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="id" type="xs:string" use="required"/> <xs:attribute name="class" type="xs:string" /> <xs:attribute name="extends" type="xs:string"/> </xs:complexType> </xs:element> <xs:element name="parameterMaps"> <xs:complexType> <xs:sequence> <xs:element ref="parameterMap" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="property"> <xs:complexType> <xs:attribute name="name" type="xs:string" use="required"/> <xs:attribute name="value" type="xs:string" use="required"/> </xs:complexType> </xs:element> <xs:element name="result"> <xs:complexType> <xs:attribute name="property" type="xs:string" use="required"/> <xs:attribute name="column" type="xs:string"/> <xs:attribute name="lazyLoad"> <xs:simpleType> <xs:restriction base="xs:NMTOKEN"> <xs:enumeration value="false"/> <xs:enumeration value="true"/> </xs:restriction> </xs:simpleType> </xs:attribute> <xs:attribute name="select" type="xs:string"/> <xs:attribute name="nullValue" type="xs:string"/> <xs:attribute name="type" type="xs:string"/> <xs:attribute name="dbType" type="xs:string"/> <xs:attribute name="columnIndex" type="xs:string"/> <xs:attribute name="resultMapping" type="xs:string"/> <xs:attribute name="typeHandler" type="xs:string"/> </xs:complexType> </xs:element> <xs:element name="argument"> <xs:complexType> <xs:attribute name="argumentName" type="xs:string" use="required"/> <xs:attribute name="column" type="xs:string"/> <xs:attribute name="select" type="xs:string"/> <xs:attribute name="nullValue" type="xs:string"/> <xs:attribute name="type" type="xs:string"/> <xs:attribute name="dbType" type="xs:string"/> <xs:attribute name="columnIndex" type="xs:string"/> <xs:attribute name="resultMapping" type="xs:string"/> <xs:attribute name="typeHandler" type="xs:string"/> </xs:complexType> </xs:element> <xs:element name="constructor"> <xs:complexType> <xs:sequence> <xs:element ref="argument" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="resultMap"> <xs:complexType> <xs:sequence> <xs:element ref="constructor" minOccurs="0" maxOccurs="1"/> <xs:element ref="result" minOccurs="0" maxOccurs="unbounded"/> <xs:element ref="discriminator" minOccurs="0" maxOccurs="1"/> <xs:element ref="subMap" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="id" type="xs:string" use="required"/> <xs:attribute name="class" type="xs:string" use="required"/> <xs:attribute name="extends" type="xs:string"/> <xs:attribute name="groupBy" type="xs:string"/> </xs:complexType> </xs:element> <xs:element name="resultMaps"> <xs:complexType> <xs:sequence> <xs:element ref="resultMap" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="select"> <xs:complexType mixed="true"> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element ref="include"/> <xs:element ref="dynamic"/> <xs:element ref="isEmpty"/> <xs:element ref="isEqual"/> <xs:element ref="isGreaterEqual"/> <xs:element ref="isGreaterThan"/> <xs:element ref="isLessThan"/> <xs:element ref="isLessEqual"/> <xs:element ref="isNotEmpty"/> <xs:element ref="isNotEqual"/> <xs:element ref="isNotNull"/> <xs:element ref="isNotParameterPresent"/> <xs:element ref="isNotPropertyAvailable"/> <xs:element ref="isNull"/> <xs:element ref="isParameterPresent"/> <xs:element ref="isPropertyAvailable"/> <xs:element ref="iterate"/> <xs:element ref="generate"/> </xs:choice> <xs:attribute name="id" type="xs:string" use="required"/> <xs:attribute name="parameterClass" type="xs:string"/> <xs:attribute name="resultMap" type="xs:string"/> <xs:attribute name="resultClass" type="xs:string"/> <xs:attribute name="parameterMap" type="xs:string"/> <xs:attribute name="cacheModel" type="xs:string"/> <xs:attribute name="listClass" type="xs:string"/> <xs:attribute name="extends" type="xs:string"/> <xs:attribute name="remapResults"> <xs:simpleType> <xs:restriction base="xs:NMTOKEN"> <xs:enumeration value="false"/> <xs:enumeration value="true"/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:complexType> </xs:element> <xs:element name="selectKey"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="property" type="xs:string" use="required"/> <xs:attribute name="type" use="required"> <xs:simpleType> <xs:restriction base="xs:NMTOKEN"> <xs:enumeration value="post"/> <xs:enumeration value="pre"/> </xs:restriction> </xs:simpleType> </xs:attribute> <xs:attribute name="resultClass" type="xs:string" use="required"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="sqlMap"> <xs:complexType> <xs:all> <xs:element ref="alias" minOccurs="0"/> <xs:element ref="cacheModels" minOccurs="0"/> <xs:element ref="resultMaps" minOccurs="0"/> <xs:element ref="statements" minOccurs="0" /> <xs:element ref="parameterMaps" minOccurs="0"/> </xs:all> <xs:attribute name="namespace" type="xs:string" use="required"/> </xs:complexType> </xs:element> <xs:element name="sql"> <xs:complexType mixed="true"> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element ref="include"/> <xs:element ref="dynamic"/> <xs:element ref="isEmpty"/> <xs:element ref="isEqual"/> <xs:element ref="isGreaterEqual"/> <xs:element ref="isGreaterThan"/> <xs:element ref="isLessThan"/> <xs:element ref="isLessEqual"/> <xs:element ref="isNotEmpty"/> <xs:element ref="isNotEqual"/> <xs:element ref="isNotNull"/> <xs:element ref="isNotParameterPresent"/> <xs:element ref="isNotPropertyAvailable"/> <xs:element ref="isNull"/> <xs:element ref="isParameterPresent"/> <xs:element ref="isPropertyAvailable"/> <xs:element ref="iterate"/> </xs:choice> <xs:attribute name="id" type="xs:string" use="required"/> </xs:complexType> </xs:element> <xs:element name="statement"> <xs:complexType mixed="true"> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element ref="include"/> <xs:element ref="dynamic"/> <xs:element ref="isEmpty"/> <xs:element ref="isEqual"/> <xs:element ref="isGreaterEqual"/> <xs:element ref="isGreaterThan"/> <xs:element ref="isLessThan"/> <xs:element ref="isLessEqual"/> <xs:element ref="isNotEmpty"/> <xs:element ref="isNotEqual"/> <xs:element ref="isNotNull"/> <xs:element ref="isNotParameterPresent"/> <xs:element ref="isNotPropertyAvailable"/> <xs:element ref="isNull"/> <xs:element ref="isParameterPresent"/> <xs:element ref="isPropertyAvailable"/> <xs:element ref="iterate"/> </xs:choice> <xs:attribute name="id" type="xs:string" use="required"/> <xs:attribute name="parameterClass" type="xs:string"/> <xs:attribute name="resultMap" type="xs:string"/> <xs:attribute name="resultClass" type="xs:string"/> <xs:attribute name="parameterMap" type="xs:string"/> <xs:attribute name="listClass" type="xs:string"/> <xs:attribute name="cacheModel" type="xs:string"/> <xs:attribute name="remapResults"> <xs:simpleType> <xs:restriction base="xs:NMTOKEN"> <xs:enumeration value="false"/> <xs:enumeration value="true"/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:complexType> </xs:element> <xs:element name="statements"> <xs:complexType> <xs:choice maxOccurs="unbounded"> <xs:element ref="sql"/> <xs:element ref="statement"/> <xs:element ref="insert"/> <xs:element ref="update"/> <xs:element ref="delete"/> <xs:element ref="select"/> <xs:element ref="procedure"/> </xs:choice> </xs:complexType> </xs:element> <xs:element name="typeAlias"> <xs:complexType> <xs:attribute name="alias" type="xs:string" use="required"/> <xs:attribute name="type" type="xs:string" use="required"/> </xs:complexType> </xs:element> <xs:element name="update"> <xs:complexType mixed="true"> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element ref="include"/> <xs:element ref="generate"/> <xs:element ref="dynamic"/> <xs:element ref="isEmpty"/> <xs:element ref="isEqual"/> <xs:element ref="isGreaterEqual"/> <xs:element ref="isGreaterThan"/> <xs:element ref="isLessThan"/> <xs:element ref="isLessEqual"/> <xs:element ref="isNotEmpty"/> <xs:element ref="isNotEqual"/> <xs:element ref="isNotNull"/> <xs:element ref="isNotParameterPresent"/> <xs:element ref="isNotPropertyAvailable"/> <xs:element ref="isNull"/> <xs:element ref="isParameterPresent"/> <xs:element ref="isPropertyAvailable"/> <xs:element ref="iterate"/> </xs:choice> <xs:attribute name="id" type="xs:string" use="required"/> <xs:attribute name="parameterMap" type="xs:string"/> <xs:attribute name="parameterClass" type="xs:string"/> <xs:attribute name="extends" type="xs:string"/> <xs:attribute name="remapResults"> <xs:simpleType> <xs:restriction base="xs:NMTOKEN"> <xs:enumeration value="false"/> <xs:enumeration value="true"/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:complexType> </xs:element> </xs:schema>