zoukankan      html  css  js  c++  java
  • iBATIS.NET 持久性框架,有时间完善它

    iBATIS.NET 持久性框架有时间完善它

    providers.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, 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="false"
              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"
      />
      <!--SqlServer 2.0 SQl-->
      <provider
            name="sqlServer2.0"
            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="false"
        />
      <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="false"
              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="true"
          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="false"
          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"
        />
      <!--ODBC 2.0 Support-->
      <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"
      />
     
      <!--Oracle Support-->
      <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"
      />
      <!--ByteFX Support-->
      <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"
      />
      <!--MySql Support-->
      <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"
      />
      <!--SQLite 3 Support-->
      <provider name="SQLite3"
          description="SQLite, SQLite.NET provider V1.0.66.0"
          enabled="false"
          assemblyName="System.Data.SQLite, Version=1.0.66.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"
          connectionClass="System.Data.SQLite.SQLiteConnection"  
        commandClass="System.Data.SQLite.SQLiteCommand"  
        parameterClass="System.Data.SQLite.SQLiteParameter"  
        parameterDbTypeClass="System.Data.SQLite.TypeAffinity"  
        parameterDbTypeProperty="DbType"  
        dataAdapterClass="System.Data.SQLite.SQLiteDataAdapter"  
        commandBuilderClass="System.Data.SQLite.SQLiteCommandBuilder"  
        usePositionalParameters="false"  
        useParameterPrefixInSql="true"  
        useParameterPrefixInParameter="true"  
        parameterPrefix="@"  
        setDbParameterPrecision="false"  
        setDbParameterScale="false"  
        allowMARS="false"  
      />
      <!--Firebird Support-->
      <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"
      />
      <!--PostgreSql Support-->
      <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"
      />
      <!--PostgreSql 2.2.4.3-->
      <provider
       name="PostgreSql2.2.4.3"
       description="PostgreSql, Npgsql provider V2.2.4.3  .Net Data Provider for PostgreSQL"
       enabled="false"
       assemblyName="Npgsql, Version=2.2.4.3, 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"
      />
      <!--DB2 Support-->
      <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"
        />
      <provider
        name="ODP.NET Managed"
        description="Oracle, ODP.NET Managed 4.121.1.0"
        enabled="true"
        assemblyName="Oracle.ManagedDataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342"
        connectionClass="Oracle.ManagedDataAccess.Client.OracleConnection"
        commandClass="Oracle.ManagedDataAccess.Client.OracleCommand"
        parameterClass="Oracle.ManagedDataAccess.Client.OracleParameter"
        parameterDbTypeClass="Oracle.ManagedDataAccess.Client.OracleDbType"
        parameterDbTypeProperty="OracleDbType"
        dataAdapterClass="Oracle.ManagedDataAccess.Client.OracleDataAdapter"
        commandBuilderClass="Oracle.ManagedDataAccess.Client.OracleCommandBuilder"
        usePositionalParameters="true"
        useParameterPrefixInSql="true"
        useParameterPrefixInParameter="true"
        parameterPrefix=":"
        useDeriveParameters="false"
        allowMARS="false"
    />
    </providers>

    Ibatis与log4net一起配置

    Web.config

    <?xml version="1.0"?>
    <!--
      有关如何配置 ASP.NET 应用程序的详细信息,请访问
      http://go.microsoft.com/fwlink/?LinkId=169433
      -->
    <configuration>
      <configSections>
        <sectionGroup name="iBATIS">
          <section name="logging" type="MyBatis.Common.Logging.ConfigurationSectionHandler,MyBatis.Common"/>
        </sectionGroup>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
      </configSections>
      <appSettings>
        <add key="lo4net.Internal.Debug" value="true"/>
        <add key="ConnectionType" value="Oracle"/>
      </appSettings>
      <connectionStrings>
       
        <add name="SQLSERVER" connectionString="Data Source=10.16.30.40;Initial Catalog=HIS_guye;Persist Security Info=True;User ID=sa;Password=mtkj123!;Max Pool Size=100; Min Pool Size=1;"/>
        <add name="Oracle" connectionString="Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.16.30.30)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=mtemr)));Persist Security Info=True;User ID=MTHOSPITALGUYE;Password=mtkj;"/>
      </connectionStrings>
     
    
      <!--<system.diagnostics>
        <trace autoflush="true">
          <listeners>
            <add name="textWriterTraceListener" type="System.Diagnostics.TextWriterTraceListener"
                 initializeData="Logslog4net.txt"/>
          </listeners>
        </trace>
      </system.diagnostics>-->
      <iBATIS>
        <!--inline :log4net 节点在App.Config/Web.Config 文件中配置
            file:使用外置配置文件 (需要configFile参数配合使用,<arg key="configFile" value="外部配置文件")
            file-watch: 与"file"一样,只是多了一个监视外部配置文件的变动功能,如果有变动则重新加载配置。
            external:IBatis将不会尝试配置Log4Net。-->
        <logging>
          <logFactoryAdapter type="MyBatis.Common.Logging.Log4Net.Log4NetLoggerFA, MyBatis.Common.Logging.Log4Net">
            <!--<arg key="configType" value="inline"/>-->
            <arg key="configType" value="inline"/>
            <arg key="configFile" value="log4net.config"/>
            <arg key="showLogName" value="true"/>
            <arg key="showDataTime" value="true"/>
            <arg key="level" value="ALL"/>
            <arg key="dateTimeFormat" value="yyyy/MM/dd HH:mm:ss:SSS"/>
          </logFactoryAdapter>
        </logging>
      </iBATIS>
      <log4net>
        <!-- 这个日志是系统其他地方写日志时候用到的设置 -->
        <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
          <!--<file value="./LogsLog_" />
          <appendToFile value="true" />
          <rollingStyle value="Date" />
          <datePattern value="yyyyMMdd'.txt'" />
          <staticLogFileName value="false" />
          <layout type="log4net.Layout.PatternLayout">
            <header value="&#xD;&#xA;" />
            <ConversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline%newline%newline" />
          </layout>-->
          <file value="./Logs"/>
          <param name="AppendToFile" value="true"/>
          <!--日志最大个数,都是最新的-->
          <!--rollingStyle节点为Date时,该节点不起作用-->
          <!--rollingStyle节点为Size时,只能有value个日志-->
          <!--rollingStyle节点为Composite时,每天有value个日志-->
          <!-- 切割最多文件数 -1表示不限制产生日志文件数-->
          <param name="MaxSizeRollBackups" value="100"/>
          <!--防止多线程时不能写Log,官方说线程非安全-->
          <!--实际使用时,本地测试正常,部署后有不能写日志的情况-->
          <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
          <!-- 每个文件的大小限制  -->
          <param name="MaximumFileSize" value="10MB"/>
          <!--可以为:Once|Size|Date|Composite-->
          <!--Composite为Size和Date的组合-->
          <!-- RollingStyle Composite 综合  Size 按大小  Date 按时间 -->
          <param name="RollingStyle" value="Composite"/>
          <param name="DatePattern" value="&quot;Logs_&quot;yyyyMMdd&quot;.txt&quot;"/>
          <param name="StaticLogFileName" value="false"/>
          <layout type="log4net.Layout.PatternLayout,log4net">
            <param name="Header" value="&#xA;----------------------application startup--------------------------&#xA;"/>
            <param name="Footer" value="&#xA; ----------------------application shutdown--------------------------&#xA;"/>
            <param name="ConversionPattern" value="%d [%t] %-5p %c - (%line)  %m%n"/>
          </layout>
          <filter type="log4net.Filter.LevelRangeFilter">
            <param name="LevelMin" value="ALL"/>
            <param name="LevelMax" value="OFF"/>
          </filter>
        </appender>
        <root>
          <level value="All"/>
          <appender-ref ref="RollingLogFileAppender"/>
        </root>
        <!-- IBatisLogFile的日志 -->
        <appender name="IBatisLogFile" type="log4net.Appender.RollingFileAppender">
          <file value="./LogsiBatis_"/>
          <appendToFile value="true"/>
          <datePattern value="yyyy-MM-dd'.txt'"/>
          <rollingStyle value="Date"/>
          <staticLogFileName value="false"/>
          <layout type="log4net.Layout.PatternLayout">
            <header value="[Header]&#xA;"/>
            <footer value="[Footer]&#xA;"/>
            <conversionPattern value="%date{dd/MM/yyyy-HH:mm:ss} %m%newline%exception"/>
          </layout>
        </appender>
        <!-- IBatisMapperLogFile的日志 -->
        <appender name="IBatisMapperLogFile" type="log4net.Appender.RollingFileAppender">
          <!--<file value="./LogsiBatisMapper_" />
          <appendToFile value="true" />
          <datePattern value="yyyy-MM-dd'.txt'" />
          <rollingStyle value="Date" />
          <staticLogFileName value="false" />-->
          <file value="./Logs"/>
          <param name="AppendToFile" value="true"/>
          <!--日志最大个数,都是最新的-->
          <!--rollingStyle节点为Date时,该节点不起作用-->
          <!--rollingStyle节点为Size时,只能有value个日志-->
          <!--rollingStyle节点为Composite时,每天有value个日志-->
          <!-- 切割最多文件数 -1表示不限制产生日志文件数-->
          <param name="MaxSizeRollBackups" value="50"/>
          <!--防止多线程时不能写Log,官方说线程非安全-->
          <!--实际使用时,本地测试正常,部署后有不能写日志的情况-->
          <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
          <!-- 每个文件的大小限制  -->
          <param name="MaximumFileSize" value="10MB"/>
          <!--可以为:Once|Size|Date|Composite-->
          <!--Composite为Size和Date的组合-->
          <!-- RollingStyle Composite 综合  Size 按大小  Date 按时间 -->
          <param name="RollingStyle" value="Composite"/>
          <param name="DatePattern" value="&quot;iBatisMapper_&quot;yyyyMMdd&quot;.txt&quot;"/>
          <param name="StaticLogFileName" value="false"/>
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date{dd/MM/yyyy-HH:mm:ss} %m%newline%exception"/>
          </layout>
        </appender>
        <!-- IBatisCacheLogFile的日志 -->
        <appender name="IBatisCacheLogFile" type="log4net.Appender.RollingFileAppender">
          <file value="./LogsiBatisChache_"/>
          <appendToFile value="true"/>
          <datePattern value="yyyy-MM-dd'.txt'"/>
          <rollingStyle value="Date"/>
          <staticLogFileName value="false"/>
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date{dd/MM/yyyy-HH:mm:ss} %m%newline%exception"/>
          </layout>
        </appender>
        <!-- 注意一定要加additivity="false",因为异常日志是往上传递的,如果不加这个属性,在系统的总日志里面也会有IBatisNet的日志,这样就重复记录了 -->
        <logger name="MyBatis" additivity="false">
          <level value="All"/>
          <!--如果想增加日志输出目的地,增加<appender-ref>节点就是了,注意后面的ref是在config中配置的appender name-->
          <appender-ref ref="IBatisLogFile"/>
        </logger>
        <!-- 注意一定要加additivity="false",因为异常日志是往上传递的,如果不加这个属性,在系统的总日志里面,以及IBatisNet里的日志里,也会有IBatisNet.DataMapper的日志,这样就重复记录了 -->
        <!--<logger name="IBatisNet.DataMapper" >
          <level value="ALL"/>
          <appender-ref ref="IBatisMapperLogFile" />
        </logger>-->
        <!-- Print only messages of level DEBUG or above in the packages -->
        <logger name="MyBatis.DataMapper" additivity="false">
          <level value="DEBUG"/>
          <appender-ref ref="IBatisMapperLogFile"/>
        </logger>
        <!-- Print only messages of level DEBUG or above in the packages -->
        <logger name="MyBatis.DataMapper.Model.Cache.CacheModel" additivity="false">
          <appender-ref ref="IBatisCacheLogFile"/>
          <level value="DEBUG"/>
        </logger>
        <!--<logger name="MyBatis.DataMapper.Model.Statements.PreparedStatementFactory"  additivity="false">
          <appender-ref ref="IBatisMapperLogFile" />
          <level value="DEBUG" />
        </logger>-->
        <logger name="MyBatis.DataMapper.DefaultMapperFactory">
          <appender-ref ref="IBatisMapperLogFile"/>
          <level value="DEBUG"/>
        </logger>
        <logger name="MyBatis.DataMapper.Proxy.LazyListGenericFactory">
          <appender-ref ref="IBatisMapperLogFile"/>
          <level value="DEBUG"/>
        </logger>
        <logger name="MyBatis.DataMapper.Proxy.LazyLoadProxyFactory">
          <appender-ref ref="IBatisMapperLogFile"/>
          <level value="DEBUG"/>
        </logger>
        <logger name="MyBatis.DataMapper.Session.Transaction.Ado.AdoTransactionFactory">
          <appender-ref ref="IBatisMapperLogFile"/>
          <level value="DEBUG"/>
        </logger>
        <logger name="MyBatis.DataMapper.Session.Stores.SessionStoreFactory">
          <appender-ref ref="IBatisMapperLogFile"/>
          <level value="DEBUG"/>
        </logger>
        <logger name="MyBatis.DataMapper.Session.DefaultSessionFactory">
          <appender-ref ref="IBatisMapperLogFile"/>
          <level value="DEBUG"/>
        </logger>
        <!--<logger name="MyBatis.DataMapper.Model.DefaultModelStore">
          <appender-ref ref="IBatisMapperLogFile" />
          <level value="DEBUG" />
        </logger>-->
        <logger name="MyBatis.DataMapper.DataMapper">
          <appender-ref ref="IBatisMapperLogFile"/>
          <level value="DEBUG"/>
        </logger>
        <!--<logger name="MyBatis.DataMapper.Data.PreparedCommandFactory">
          <appender-ref ref="IBatisMapperLogFile" />
          <level value="DEBUG" />
        </logger>
        <logger name="MyBatis.DataMapper.DataExchange.DataExchangeFactory">
          <appender-ref ref="IBatisMapperLogFile" />
          <level value="DEBUG" />
        </logger>
        <logger name="MyBatis.DataMapper.Session.Stores.SessionStoreFactory">
          <appender-ref ref="IBatisMapperLogFile" />
          <level value="DEBUG" />
        </logger>-->
        <!--<logger name="IBatisNet.DataMapper.Configuration.Cache.CacheModel">
          <level value="ALL" />
          <appender-ref ref="IBatisCacheLogFile" />
        </logger>
        <logger name="IBatisNet.DataMapper.Configuration.Statements.PreparedStatementFactory">
          <level value="ALL" />
          <appender-ref ref="IBatisMapperLogFile" />
        </logger>
        <logger name="IBatisNet.DataMapper.LazyLoadList">
          <level value="ALL" />
          <appender-ref ref="IBatisMapperLogFile" />
        </logger>
        <logger name="IBatisNet.DataAccess.DaoSession">
          <level value="ALL" />
          <appender-ref ref="IBatisMapperLogFile" />
        </logger>
        <logger name="IBatisNet.DataMapper.SqlMapSession">
          <level value="ALL" />
          <appender-ref ref="IBatisMapperLogFile" />
        </logger>
        <logger name="IBatisNet.Common.Transaction.TransactionScope">
          <level value="ALL" />
          <appender-ref ref="IBatisMapperLogFile" />
        </logger>
        <logger name="IBatisNet.DataAccess.Configuration.DaoProxy">
          <level value="ALL" />
          <appender-ref ref="IBatisMapperLogFile" />
        </logger>-->
      </log4net>
      <!--
        有关 web.config 更改的说明,请参见 http://go.microsoft.com/fwlink/?LinkId=235367。
    
        可在 <httpRuntime> 标记上设置以下特性。
          <system.Web>
            <httpRuntime targetFramework="4.5" />
          </system.Web>
      -->
      <system.web>
        <webServices>
          <protocols>
            <add name="HttpSoap"/>
            <add name="HttpPost"/>
            <add name="HttpGet"/>
            <add name="Documentation"/>
          </protocols>
        </webServices>
        <compilation debug="true" targetFramework="4.5"/>
        <httpRuntime maxRequestLength="2097151" maxQueryStringLength="2097151" useFullyQualifiedRedirectUrl="true" executionTimeout="200"/>
        <pages controlRenderingCompatibilityVersion="4.0"/>
      </system.web>
      <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
          <dependentAssembly>
            <assemblyIdentity name="Autofac" publicKeyToken="17863af14b0044da" culture="neutral"/>
            <bindingRedirect oldVersion="0.0.0.0-3.5.0.0" newVersion="3.5.0.0"/>
          </dependentAssembly>
          <dependentAssembly>
            <assemblyIdentity name="log4net" publicKeyToken="669e0ddf0bb1aa2a" culture="neutral"/>
            <bindingRedirect oldVersion="0.0.0.0-1.2.15.0" newVersion="1.2.15.0"/>
          </dependentAssembly>
        </assemblyBinding>
      </runtime>
      <system.serviceModel>
        <protocolMapping>
          <remove scheme="http"/>
          <remove scheme="net.tcp"/>
          <add scheme="http" binding="wsHttpBinding" bindingConfiguration="emrwsHttpBinding"/>
          <add scheme="http" binding="basicHttpBinding" bindingConfiguration="emrbasicHttpBinding"/>
          <add scheme="net.tcp" binding="netTcpContextBinding" bindingConfiguration="emrnetcpContextBinding"/>
          <add scheme="https" binding="wsHttpContextBinding" bindingConfiguration="emrWsHttpContextBinding"/>
        </protocolMapping>
        <bindings>
          <wsHttpBinding>
            <binding name="emrwsHttpBinding" closeTimeout="00:01:00" openTimeout="00:20:00" receiveTimeout="00:20:00" sendTimeout="00:10:00" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" messageEncoding="Text" allowCookies="true">
              <readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647"/>
              <security mode="None">
                <transport clientCredentialType="None"/>
                <message clientCredentialType="Certificate"/>
              </security>
            </binding>
          </wsHttpBinding>
          <basicHttpBinding>
            <binding name="emrbasicHttpBinding" closeTimeout="00:01:00" openTimeout="00:20:00" receiveTimeout="00:20:00" sendTimeout="00:10:00" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" messageEncoding="Mtom" allowCookies="true">
              <readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647"/>
              <security mode="None">
                <transport clientCredentialType="None"/>
                <message clientCredentialType="Certificate"/>
              </security>
            </binding>
          </basicHttpBinding>
          <!--<wsHttpContextBinding>
            <binding name="ExaWsHttpContextBinding" closeTimeout="00:01:00"
              openTimeout="00:20:00" receiveTimeout="00:20:00" sendTimeout="00:10:00"
              maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647"
              messageEncoding="Mtom" allowCookies="true">
              <readerQuotas maxDepth="32" maxStringContentLength="2147483647"
                maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
              <reliableSession inactivityTimeout="00:20:00" enabled="true" />
              <security mode="None">
                <transport clientCredentialType="None" />
                <message clientCredentialType="Certificate" />
              </security>
            </binding>
          </wsHttpContextBinding>-->
          <netTcpContextBinding>
            <binding name="emrnetcpContextBinding" transactionFlow="true" closeTimeout="00:01:00" openTimeout="00:20:00" receiveTimeout="00:20:00" sendTimeout="00:10:00" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxConnections="500" maxReceivedMessageSize="2147483647">
              <readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647"/>
              <reliableSession enabled="true" ordered="true" inactivityTimeout="00:20:00"/>
              <security mode="None">
                <message clientCredentialType="Certificate"/>
              </security>
            </binding>
          </netTcpContextBinding>
        </bindings>
        <services>
          <service behaviorConfiguration="behavior_1" name="MT.Hospital.WebService.EmrService">
            <clear/>
            <endpoint address="mex" binding="mexHttpBinding" name="MexBehavior" contract="IMetadataExchange"/>
            <endpoint address="" binding="wsHttpBinding" bindingConfiguration="emrwsHttpBinding" name="emrwsHttpBinding" contract="MT.Hospital.WebService.IEmrService">
              <identity>
                <dns value="localhost"/>
              </identity>
            </endpoint>
            <endpoint address="EmrApi" binding="basicHttpBinding" bindingConfiguration="emrbasicHttpBinding" name="emrbasicHttpBinding" contract="MT.Hospital.WebService.IEmrService">
              <identity>
                <dns value="localhost"/>
              </identity>
            </endpoint>
            <endpoint address="net.tcp" binding="netTcpContextBinding" bindingConfiguration="emrnetcpContextBinding" name="emrnetcpContextBinding" contract="MT.Hospital.WebService.IEmrService"/>
            <host>
              <baseAddresses>
                <add baseAddress="http://localhost:8099/EmrApi"/>
                <add baseAddress="net.tcp://localhost:50001"/>
              </baseAddresses>
              <timeouts closeTimeout="00:01:00" openTimeout="00:20:00"/>
            </host>
          </service>
          <service behaviorConfiguration="behavior_1" name="MT.Hospital.WebService.NetTcp.EmrService">
            <clear/>
            <endpoint address="mex" binding="mexHttpBinding" name="MexBehavior" contract="IMetadataExchange"/>
            <endpoint address="net.tcp" binding="netTcpContextBinding" bindingConfiguration="emrnetcpContextBinding" name="emrnetcpContextBinding" contract="MT.Hospital.WebService.NetTcp.IEmrService"/>
            <host>
              <baseAddresses>
                <add baseAddress="net.tcp://localhost:50001/Service"/>
                <add baseAddress="http://localhost:8099/"/>
              </baseAddresses>
              <timeouts closeTimeout="00:01:00" openTimeout="00:20:00"/>
            </host>
          </service>
        </services>
        <behaviors>
          <serviceBehaviors>
            <behavior name="behavior_1">
              <serviceThrottling maxConcurrentCalls="500" maxConcurrentSessions="500" maxConcurrentInstances="500"/>
              <serviceMetadata httpGetEnabled="true"/>
              <serviceDebug includeExceptionDetailInFaults="false"/>
              <serviceTimeouts transactionTimeout="00:20:00"/>
              <dataContractSerializer maxItemsInObjectGraph="65536000"/>
            </behavior>
            <behavior name="">
              <serviceMetadata httpGetEnabled="true"/>
              <serviceDebug includeExceptionDetailInFaults="true"/>
            </behavior>
          </serviceBehaviors>
        </behaviors>
        <serviceHostingEnvironment aspNetCompatibilityEnabled="false" multipleSiteBindingsEnabled="true"/>
      </system.serviceModel>
      <system.webServer>
        <modules runAllManagedModulesForAllRequests="true"/>
      </system.webServer>
    </configuration>

    log4net.config

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <configSections>
        <sectionGroup name="iBATIS">
          <section name="logging" type="MyBatis.Common.Logging.ConfigurationSectionHandler,MyBatis.Common" />
        </sectionGroup>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
      </configSections>
      <appSettings>
        <add key="log4net.Internal.Debug" value="true"/>
      </appSettings>
      
      <iBATIS>
        <logging>
          <logFactoryAdapter type="MyBatis.Common.Logging.Log4Net.Log4NetLoggerFA, MyBatis.Common.Logging.Log4Net">
            <arg key="configType" value="inline" />
            <arg key="showLogName" value="true" />
            <arg key="showDateTime" value="true" />
            <arg key="level" value="All" />
            <arg key="dateTimeFormat" value="yyyy/MM/dd HH:mm:ss:SSS" />
          </logFactoryAdapter>
        </logging>
      </iBATIS>
      <!--每个<appender>子节点代表一种记录日志的方式-->
      <log4net>
        <!-- 这个日志是系统其他地方写日志时候用到的设置 -->
        <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
          <file value="./Logs" />
          <param name="AppendToFile" value="true" />
          <!--日志最大个数,都是最新的-->
          <!--rollingStyle节点为Date时,该节点不起作用-->
          <!--rollingStyle节点为Size时,只能有value个日志-->
          <!--rollingStyle节点为Composite时,每天有value个日志-->
          <!-- 切割最多文件数 -1表示不限制产生日志文件数-->
          <param name="MaxSizeRollBackups" value="100"/>
          <!--防止多线程时不能写Log,官方说线程非安全-->
          <!--实际使用时,本地测试正常,部署后有不能写日志的情况-->
          <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
          <!-- 每个文件的大小限制  -->
          <param name="MaximumFileSize" value="10MB"/>
          <!--可以为:Once|Size|Date|Composite-->
          <!--Composite为Size和Date的组合-->
          <!-- RollingStyle Composite 综合  Size 按大小  Date 按时间 -->
          <param name="RollingStyle" value="Composite" />
          <param name="DatePattern" value="&quot;Logs_&quot;yyyyMMdd&quot;.txt&quot;" />
          <param name="StaticLogFileName" value="false" />
          <layout type="log4net.Layout.PatternLayout,log4net">
            <param name="Header" value="&#xD;&#xA;----------------------application startup--------------------------&#xD;&#xA;" />
            <param name="Footer" value="&#xD;&#xA; ----------------------application shutdown--------------------------&#xD;&#xA;" />
            <param name="ConversionPattern" value="%d [%t] %-5p %c - (%line)  %m%n" />
          </layout>
          <filter type="log4net.Filter.LevelRangeFilter">
            <param name="LevelMin" value="ALL" />
            <param name="LevelMax" value="OFF" />
          </filter>
        </appender>
        <root>
          <level value="All" />
          <appender-ref ref="RollingLogFileAppender" />
        </root>
    
        <!-- IBatisLogFile的日志 -->
    
        <appender name="IBatisLogFile" type="log4net.Appender.RollingFileAppender">
          <file value="./LogsiBatis_" />
          <appendToFile value="true" />
          <datePattern value="yyyy-MM-dd'.txt'" />
          <rollingStyle value="Date" />
          <staticLogFileName value="false" />
          <layout type="log4net.Layout.PatternLayout">
            <header value="[Header]&#13;&#10;" />
            <footer value="[Footer]&#13;&#10;" />
            <conversionPattern value="%date{dd/MM/yyyy-HH:mm:ss} %m%newline%exception" />
          </layout>
        </appender>
    
        <!-- IBatisMapperLogFile的日志 -->
    
        <appender name="IBatisMapperLogFile" type="log4net.Appender.RollingFileAppender">
          <file value="./LogsiBatisMapper_" />
          <appendToFile value="true" />
          <datePattern value="yyyy-MM-dd'.txt'" />
          <rollingStyle value="Date" />
          <staticLogFileName value="false" />
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date{dd/MM/yyyy-HH:mm:ss} %m%newline%exception" />
          </layout>
        </appender>
    
        <!-- IBatisCacheLogFile的日志 -->
    
        <appender name="IBatisCacheLogFile" type="log4net.Appender.RollingFileAppender">
          <file value="./LogsiBatisChache_" />
          <appendToFile value="true" />
          <datePattern value="yyyy-MM-dd'.txt'" />
          <rollingStyle value="Date" />
          <staticLogFileName value="false" />
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date{dd/MM/yyyy-HH:mm:ss} %m%newline%exception" />
          </layout>
        </appender>
    
    
    
        <!-- 注意一定要加additivity="false",因为异常日志是往上传递的,如果不加这个属性,在系统的总日志里面也会有IBatisNet的日志,这样就重复记录了 -->
        <logger name="MyBatis" additivity="false">
          <level value="All"/>
    
          <!--如果想增加日志输出目的地,增加<appender-ref>节点就是了,注意后面的ref是在config中配置的appender name-->
          <appender-ref ref="IBatisLogFile" />
        </logger>
    
        <!-- 注意一定要加additivity="false",因为异常日志是往上传递的,如果不加这个属性,在系统的总日志里面,以及IBatisNet里的日志里,也会有IBatisNet.DataMapper的日志,这样就重复记录了 -->
    
        <!--<logger name="IBatisNet.DataMapper" >
          <level value="ALL"/>
          <appender-ref ref="IBatisMapperLogFile" />
        </logger>-->
    
        <!-- Print only messages of level DEBUG or above in the packages -->
        <logger name="MyBatis.DataMapper" >
          <level value="DEBUG"/>
          <appender-ref ref="IBatisMapperLogFile" />
        </logger>
    
        <!-- Print only messages of level DEBUG or above in the packages -->
        <logger name="MyBatis.DataMapper.Model.Cache.CacheModel">
          <appender-ref ref="IBatisCacheLogFile" />
          <level value="DEBUG" />
        </logger>
        <logger name="MyBatis.DataMapper.Model.Statements.PreparedStatementFactory">
          <appender-ref ref="IBatisMapperLogFile" />
          <level value="DEBUG" />
        </logger>
        <logger name="MyBatis.DataMapper.DefaultMapperFactory">
          <appender-ref ref="IBatisMapperLogFile" />
          <level value="DEBUG" />
        </logger>
        <logger name="MyBatis.DataMapper.Proxy.LazyListGenericFactory">
          <appender-ref ref="IBatisMapperLogFile" />
          <level value="DEBUG" />
        </logger>
        <logger name="MyBatis.DataMapper.Session.Transaction.Ado.AdoTransactionFactory">
          <appender-ref ref="IBatisMapperLogFile" />
          <level value="DEBUG" />
        </logger>
        <logger name="MyBatis.DataMapper.Session.Stores.SessionStoreFactory">
          <appender-ref ref="IBatisMapperLogFile" />
          <level value="DEBUG" />
        </logger>
        <logger name="MyBatis.DataMapper.Session.DefaultSessionFactory">
          <appender-ref ref="IBatisMapperLogFile" />
          <level value="DEBUG" />
        </logger>
        <logger name="MyBatis.DataMapper.Model.DefaultModelStore">
          <appender-ref ref="IBatisMapperLogFile" />
          <level value="DEBUG" />
        </logger>
        <logger name="MyBatis.DataMapper.DataMapper">
          <appender-ref ref="IBatisMapperLogFile" />
          <level value="DEBUG" />
        </logger>
        <logger name="MyBatis.DataMapper.DataMapper">
          <appender-ref ref="IBatisMapperLogFile" />
          <level value="DEBUG" />
        </logger>
        <!--<logger name="IBatisNet.DataMapper.Configuration.Cache.CacheModel">
          <level value="ALL" />
          <appender-ref ref="IBatisCacheLogFile" />
        </logger>
        <logger name="IBatisNet.DataMapper.Configuration.Statements.PreparedStatementFactory">
          <level value="ALL" />
          <appender-ref ref="IBatisMapperLogFile" />
        </logger>
        <logger name="IBatisNet.DataMapper.LazyLoadList">
          <level value="ALL" />
          <appender-ref ref="IBatisMapperLogFile" />
        </logger>
        <logger name="IBatisNet.DataAccess.DaoSession">
          <level value="ALL" />
          <appender-ref ref="IBatisMapperLogFile" />
        </logger>
        <logger name="IBatisNet.DataMapper.SqlMapSession">
          <level value="ALL" />
          <appender-ref ref="IBatisMapperLogFile" />
        </logger>
        <logger name="IBatisNet.Common.Transaction.TransactionScope">
          <level value="ALL" />
          <appender-ref ref="IBatisMapperLogFile" />
        </logger>
        <logger name="IBatisNet.DataAccess.Configuration.DaoProxy">
          <level value="ALL" />
          <appender-ref ref="IBatisMapperLogFile" />
        </logger>-->
      </log4net>
    </configuration>
  • 相关阅读:
    单例模式
    HashSet、LinkedHashSet、SortedSet、TreeSet
    ArrayList、LinkedList、CopyOnWriteArrayList
    HashMap、Hashtable、LinkedHashMap
    andrew ng machine learning week8 非监督学习
    andrew ng machine learning week7 支持向量机
    andrew ng machine learning week6 机器学习算法理论
    andrew ng machine learning week5 神经网络
    andrew ng machine learning week4 神经网络
    vue组件监听属性变化watch方法报[Vue warn]: Method "watch" has type "object" in the component definition. Did you reference the function correctly?
  • 原文地址:https://www.cnblogs.com/wangyinlon/p/10907093.html
Copyright © 2011-2022 走看看