因为一些特殊原因,正在使用的Ibatis.net 1.6.2版本(目前已经停止更新),在网络上搜集了整理了一份关于Ibatis.net的各项配置,分享出来。
本文内容引用了(https://www.cnblogs.com/mingyongcheng/archive/2011/03/07/1975370.html)中的部分内容。
另外推荐这篇文章(https://www.cnblogs.com/anderslly/archive/2007/09/29/ibatisinactionch03.html)讲解的很详细。
言归正传,下面贴出Ibatis.net的常用配置项。
一、providers.config
DataMapper在该文件中查找选择的数据库Provider的定义。计划使用的provider要将enabled属性置为true。
<?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, provider V1.0.3300.0 in framework .NET V1.0" enabled="false" 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="@" allowMARS="false" /> <provider name="sqlServer1.1" description="Microsoft SQL Server, 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="@" allowMARS="false" /> <provider name="sqlServer2.0" enabled="true" description="Microsoft SQL Server, provider V2.0.0.0 in framework .NET V2.0" assemblyName="System.Data, Version=2.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="false" /> <provider name="sqlServer2005" enabled="false" description="Microsoft SQL Server, provider V2.0.0.0 in framework .NET V2.0" assemblyName="System.Data, Version=2.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="" allowMARS="false" /> <provider name="OleDb2.0" description="OleDb, provider V2.0.0.0 in framework .NET V2" enabled="false" assemblyName="System.Data, Version=2.0.0.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="" allowMARS="false" /> <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="@" allowMARS="false" /> <provider name="Odbc2.0" description="Odbc, provider V2.0.0.0 in framework .NET V2" enabled="false" assemblyName="System.Data, Version=2.0.0.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="@" allowMARS="false" /> <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" allowMARS="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" allowMARS="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=":" allowMARS="false" /> <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="@" allowMARS="false" /> <provider name="MySql" description="MySQL, MySQL provider 1.0.7.30072" enabled="false" assemblyName="MySql.Data, Version=1.0.7.30072, 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="?" allowMARS="false" /> <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" allowMARS="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="@" allowMARS="false" /> <provider name="PostgreSql0.99.1.0" description="PostgreSql, Npgsql provider V0.99.1.0" enabled="false" assemblyName="Npgsql, Version=0.99.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=":" allowMARS="true" /> <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="" allowMARS="false" /> <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" allowMARS="false" /> </providers>
二、SqlMap.xml
包含了SQL查询的映射文件,项目中会包换一个或多个这种文件,其名称是自定义的,一般与表名对应,如Account.xml或Product.xml。
<?xml version="1.0" encoding="UTF-8" ?> <sqlMap namespace="STUDENT" xmlns="http://ibatis.apache.org/mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <alias> <typeAlias alias="Student" type="TEST, STUDENT" /> </alias> <resultMaps> <resultMap id="SelectResult" class="Student"> <result property="ID" column="id" /> <result property="NAME" column="name" /> </resultMap> </resultMaps> <statements> <select id="STUDENT_SELECT" parameterClass="int" resultMap="SelectResult"> Select id, name From STUDENT </select> <select id="STUDENT_SELECT_BY_ID" parameterClass="int" extends = "STUDENT_SELECT" resultMap="SelectResult"> <dynamic prepend="WHERE"> <isParameterPresent> id=#ID# </isParameterPresent> </dynamic> </select> <insert id="STUDENT_INSERT" parameterClass="STUDENT"> Insert Into STUDENT ( id, name )Values( #ID#, #NAME# ) </insert> <update id="STUDENT_UPDATE" parameterClass="STUDENT"> Update STUDENT Set id=#ID#, name=#NAME# <dynamic prepend="WHERE"> <isParameterPresent> id=#ID# </isParameterPresent> </dynamic> </update> <delete id="STUDENT_DELETE_BY_ID" parameterClass="int"> Delete From STUDENT <dynamic prepend="WHERE"> <isParameterPresent> id=#ID# </isParameterPresent> </dynamic> </delete> </statements> </sqlMap>
三、SqlMap.config
DataMapper配置文件,用于指定SqlMap.xml和providers.config文件的位置。同时还定义了其它的DataMapper配置选项,如缓存。我们需要为项目中的每个数据源编写一个SqlMap.config文件。
<?xml version="1.0" encoding="utf-8"?> <sqlMapConfig xmlns="http://ibatis.apache.org/dataMapper" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > <settings> <setting useStatementNamespaces="false"/> <setting cacheModelsEnabled="true"/> </settings> <database>
<--以下provider只能有一个生效,其余请注释-->
<provider name="oracleClient1.0"/> <dataSource name="SqlMap" connectionString="data source=127.0.0.1/orcl;user id=username;password=password"/> <provider name="oracle10.1"/> <dataSource name="SqlMap" connectionString="data source=127.0.0.1/orcl;user id=username;password=password"/> <provider name="OleDb1.1"/> <dataSource name="SqlMap" connectionString="Provider=OraOLEDB.Oracle.1;Data Source=127.0.0.1/orcl;User Id=username;Password=password;"/> <provider name="Odbc2.0"/> <dataSource name="SqlMap" connectionString="Driver={Microsoft ODBC for Oracle};Server=127.0.0.1/orcl;Uid=username;Pwd=password;"/> </database> <sqlMaps> <sqlMap embedded="ConsoleIbatis.Config.Student.xml,ConsoleIbatis"/> </sqlMaps> </sqlMapConfig>