You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ibatis.apache.org by gb...@apache.org on 2006/06/27 21:00:19 UTC

svn commit: r417556 - in /ibatis/trunk/cs/docs/dataMapperGuide/src/en: dotnet.xml working.xml

Author: gbayon
Date: Tue Jun 27 12:00:19 2006
New Revision: 417556

URL: http://svn.apache.org/viewvc?rev=417556&view=rev
Log:
- Updated doc before release

Modified:
    ibatis/trunk/cs/docs/dataMapperGuide/src/en/dotnet.xml
    ibatis/trunk/cs/docs/dataMapperGuide/src/en/working.xml

Modified: ibatis/trunk/cs/docs/dataMapperGuide/src/en/dotnet.xml
URL: http://svn.apache.org/viewvc/ibatis/trunk/cs/docs/dataMapperGuide/src/en/dotnet.xml?rev=417556&r1=417555&r2=417556&view=diff
==============================================================================
--- ibatis/trunk/cs/docs/dataMapperGuide/src/en/dotnet.xml (original)
+++ ibatis/trunk/cs/docs/dataMapperGuide/src/en/dotnet.xml Tue Jun 27 12:00:19 2006
@@ -800,6 +800,15 @@
                 debugging.</para><programlisting>Example: validateSqlMap=”false”
 Default: false (disabled)</programlisting></entry>
               </row>
+
+			  <row>
+                <entry><emphasis>useReflectionOptimizer </emphasis></entry>
+
+                <entry><para>This setting globally enables or disables the
+               usage of reflection to access property/filed value of C# object. The reflection optimizer use will emit types for retrieving, populating, instantiating parameter and result objects. 
+</para><programlisting>Example: useReflectionOptimizer=”true”
+Default: true (enabled)</programlisting></entry>
+              </row>
             </tbody>
           </tgroup>
         </table>
@@ -1267,7 +1276,7 @@
 {
  public class Mapper
  {
-  private static volatile SqlMapper _mapper = null;
+  private static volatile ISqlMapper _mapper = null;
 
   protected static void Configure (object obj)
   {
@@ -1281,7 +1290,7 @@
    _mapper = builder.ConfigureAndWatch(handler);
   }
 
-  public static SqlMapper Instance()
+  public static ISqlMapper Instance()
   {
    if (_mapper == null)
    {
@@ -1296,7 +1305,7 @@
    return _mapper;
   }
   
-  public static SqlMapper Get()
+  public static ISqlMapper Get()
   {
    return Instance();
   }
@@ -1304,11 +1313,11 @@
 }</programlisting>
         </example></para>
 
-      <para>To obtain the <classname>SqlMapper</classname> instance, just
+      <para>To obtain the <classname>ISqlMapper</classname> instance, just
       call</para>
 
       <para><programlisting>[C#]
-SqlMapper mapper = Mapper.Instance();</programlisting></para>
+ISqlMapper mapper = Mapper.Instance();</programlisting></para>
 
       <para>anywhere in your application, and specify one of the
       <classname>SqlMapper</classname> methods (see Section 5.3.2) . Here's an
@@ -1350,7 +1359,7 @@
       instead:</para>
 
       <para><programlisting>[C#]
-SqlMapper mapper = builder.Configure();</programlisting></para>
+ISqlMapper mapper = builder.Configure();</programlisting></para>
 
       <sect3>
         <title>Multiple Databases</title>
@@ -1362,15 +1371,15 @@
         <methodname>ConfigureAndWatch</methodname> to</para>
 
         <para><programlisting>[C#]
-SqlMapper mapper = builder.ConfigureAndWatch("anotherSqlMapConfig.config", handler);</programlisting></para>
+ISqlMapper mapper = builder.ConfigureAndWatch("anotherSqlMapConfig.config", handler);</programlisting></para>
 
         <para>and substitute the name of your configuration file. Each
         database then has their own singleton you can call from your
         application:</para>
 
         <para><programlisting>[C#]
-SqlMapper sqlServer = SqlServerMapper.Get();
-SqlMapper access = AccessMapper.Get();</programlisting></para>
+ISqlMapper sqlServer = SqlServerMapper.Get();
+ISqlMapper access = AccessMapper.Get();</programlisting></para>
       </sect3>
 
       <sect3>
@@ -1394,7 +1403,7 @@
         <example>
           <title>Basic SqlMapper Configuration Call</title>
 
-          <programlisting>SqlMapper mapper = builder.Configure();</programlisting>
+          <programlisting>ISqlMapper mapper = builder.Configure();</programlisting>
         </example>
 
         <para>If you have named your configuration file something other than
@@ -1410,7 +1419,7 @@
           <programlisting><emphasis role="comment">/* Configure a SqlMapper from a file path.
    Uses a relative resource path from your application root 
    or an absolute file path such as "file:\\c:\dir\a.config" */
-</emphasis>SqlMapper mapper = builder.Configure(strPath);</programlisting>
+</emphasis>ISqlMapper mapper = builder.Configure(strPath);</programlisting>
         </example>
 
         <tip>
@@ -1435,11 +1444,11 @@
 
           <programlisting><emphasis role="comment">/* Configure a SqlMapper with FileInfo. */</emphasis>
 FileInfo aFileInfo = someSupportClass.GetDynamicFileInfo();
-SqlMapper mapper = builder.Configure(aFileInfo);
+ISqlMapper mapper = builder.Configure(aFileInfo);
 
 <emphasis role="comment">/* Configure a SqlMapper through a Uri. */</emphasis>
 Uri aUri = someSupportClass.GetDynamicUri();
-SqlMapper anotherMapper = builder.Configure(aUri);</programlisting>
+ISqlMapper anotherMapper = builder.Configure(aUri);</programlisting>
         </example>
 
         <para>If you find that you already have loaded your DataMapper
@@ -1454,11 +1463,11 @@
 
           <programlisting><emphasis role="comment">/* Configure a SqlMapper with an XmlDocument */</emphasis>
 XmlDocument anXmlDoc = someSupportClass.GetDynamicXmlDocument();
-SqlMapper mapper = builder.Configure(anXmlDoc);
+ISqlMapper mapper = builder.Configure(anXmlDoc);
 
 <emphasis role="comment">/* Configure a SqlMapper from a stream. */</emphasis>
 Stream aStream = someSupportClass.GetDynamicStream();
-SqlMapper anotherMapper = builder.Configure(aStream);</programlisting>
+ISqlMapper anotherMapper = builder.Configure(aStream);</programlisting>
         </example>
 
         <para>The <classname>DomSqlMapBuilder</classname> API provides
@@ -1508,20 +1517,77 @@
    and automatically reconfigure the SqlMapper. 
    This basic ConfigureAndWatch method looks for a file with the 
    default name of SqlMap.config in the application root directory. */
-</emphasis>public SqlMapper ConfigureAndWatch(ConfigureHandler configureDelegate)
+</emphasis>public ISqlMapper ConfigureAndWatch(ConfigureHandler configureDelegate)
 
 <emphasis role="comment">/* Configure and monitor the configuration file for modifications 
    and automatically reconfigure the SqlMapper. 
    Uses a relative path from your application root 
    or an absolute file path such as "file:\\c:\dir\a.config" */
-</emphasis>public SqlMapper ConfigureAndWatch( string resource, ConfigureHandler configureDelegate )
+</emphasis>public ISqlMapper ConfigureAndWatch( string resource, ConfigureHandler configureDelegate )
 
 <emphasis role="comment">/* Configure and monitor the configuration file for modifications 
    and automatically reconfigure the SqlMapper. 
    Uses a FileInfo instance for your config file. */</emphasis>
-public SqlMapper ConfigureAndWatch( FileInfo resource, ConfigureHandler configureDelegate )</programlisting>
+public ISqlMapper ConfigureAndWatch( FileInfo resource, ConfigureHandler configureDelegate )</programlisting>
         </example>
       </sect3>
+
+	  <sect3>
+        <title>DomSqlMapBuilder : Advanced settings</title>
+			<para>Before launching the 'Configure' method to build the ISqlMapper instance, you can set those porperties.</para>
+			
+			<para>
+			<table>
+          <title>Advanced settings</title>
+
+          <tgroup cols="2">
+            <thead>
+              <row>
+                <entry>Propertie</entry>
+
+                <entry>Description</entry>
+              </row>
+            </thead>
+
+            <tbody>
+              <row>
+                <entry>Properties</entry>
+
+                <entry>Allow to set properties before configuration. Those properties will be added to the properties list defined in the properties.config.
+<programlisting>NameValueCollection properties = new NameValueCollection();
+properties.Add("connectionString", "...");
+builder.Properties = properties;
+
+ISqlMapper mapper = builder.Configure("sqlMap.config");</programlisting>
+				</entry>
+              </row>
+			  <row>
+                <entry>GetAccessorFactory</entry>
+
+                <entry>Allow to set a custom get accessor factory before configuration, see IGetAccessorFactory interface which defines the contract for the factory responsible to build set accessor for a member object in iBATIS.
+				</entry>
+              </row>
+			  <row>
+                <entry>SetAccessorFactory</entry>
+
+                <entry>Allow to set a custom set accessor factory before configuration, see ISetAccessorFactory interface which defines the contract for the factory responsible to build get accessor for a member object in iBATIS.
+				</entry>
+              </row>
+			  <row>
+                <entry>ObjectFactory</entry>
+                <entry>Allow to set a custom object factory before configuration, see IObjectFactory interface which defines the contract for the factory responsible for object creation in iBATIS.
+				</entry>
+              </row>
+			  <row>
+                <entry>ValidateSqlMapConfig</entry>
+                <entry>Enable whether or not the validation of configuration document before configuration </entry>
+              </row>
+			  </tbody>
+          </tgroup>
+        </table>
+		</para>
+
+		</sect3>
     </sect2>
 
     <sect2>

Modified: ibatis/trunk/cs/docs/dataMapperGuide/src/en/working.xml
URL: http://svn.apache.org/viewvc/ibatis/trunk/cs/docs/dataMapperGuide/src/en/working.xml?rev=417556&r1=417555&r2=417556&view=diff
==============================================================================
--- ibatis/trunk/cs/docs/dataMapperGuide/src/en/working.xml (original)
+++ ibatis/trunk/cs/docs/dataMapperGuide/src/en/working.xml Tue Jun 27 12:00:19 2006
@@ -1075,7 +1075,7 @@
         <title>property</title>
 
         <para>The <parameter>property</parameter> attribute of
-        &lt;parameter&gt; is the name of a property of the parameter object.
+        &lt;parameter&gt; is the name of a field or property of the parameter object.
         It may also be the name of an entry in a
         <interfacename>IDictionary</interfacename> object. The name can be
         used more than once depending on the number of times it is needed in
@@ -1504,7 +1504,7 @@
         <title>property</title>
 
         <para>The <parameter>property</parameter> attribute is the name of a
-        property of the result object that will be returned by the Mapped
+        field or a property of the result object that will be returned by the Mapped
         Statement. The name can be used more than once depending on the number
         of times it is needed to populate the results.</para>
       </sect3>
@@ -1628,7 +1628,82 @@
         <para>Use the lazyLoad attribute with the select attribute to indicate
         whether or not the select statement's results should be lazy loaded.
         This can provide a performance boost by delaying the loading of the
-        select statement's results until they are needed/accessed.</para>
+        select statement's results until they are needed/accessed.
+		
+		Lazy loading is supported transparently for IList and IList&lt;T&gt;  implementation.
+		Lazy loading is supported on strongly typed collection via Castle.DynamicProxy component. In this case you must set the listClass attribute and declare all methods/properties of the typed collection that you want to proxy as virtual.
+		</para>
+
+		<para><example>
+          <title>Sample of strongly typed collection used with proxy call</title>
+
+		<programlisting>
+[C#]
+
+[Serializable]
+public class LineItemCollection : CollectionBase 
+{
+	public LineItemCollection() {}
+
+	public virtual LineItem this[int index] 
+	{
+		get	{ return (LineItem)List[index]; }
+		set { List[index] = value; }
+	}
+
+	public virtual int Add(LineItem value) 
+	{
+		return List.Add(value);
+	}
+
+	public virtual void AddRange(LineItem[] value) 
+	{
+		for (int i = 0;	i &lt; value.Length; i++) 
+		{
+			Add(value[i]);
+		}
+	}
+
+	public virtual void AddRange(LineItemCollection value) 
+	{
+		for (int i = 0;	i &lt; value.Count; i++) 
+		{
+			Add(value[i]);
+		}
+	}
+
+	public virtual bool Contains(LineItem value) 
+	{
+		return List.Contains(value);
+	}
+
+	public virtual void CopyTo(LineItem[] array, int index) 
+	{
+		List.CopyTo(array, index);
+	}
+
+	public virtual int IndexOf(LineItem value) 
+	{
+		return List.IndexOf(value);
+	}
+	
+	public virtual void Insert(int index, LineItem value) 
+	{
+		List.Insert(index, value);
+	}
+	
+	public virtual void Remove(LineItem value) 
+	{
+		List.Remove(value);
+	}
+
+	public new virtual int Count
+	{
+		get {return this.List.Count;}
+	}
+}
+</programlisting>
+		 </example></para>
       </sect3>
 
       <sect3>
@@ -2553,7 +2628,14 @@
 
     <para>Table 3.4 shows the basic Supported Types for Parameter Maps and
     Result Maps for .NET. You can extend the framework's support for
-    additional types by using a Custom Type Handler.<table>
+    additional types by using a Custom Type Handler.</para>
+	
+	<note>
+	<para>Nuallable type from .NET 2.0 are fully supported by iBATIS.NET.</para>
+	</note>
+
+	<para>
+	<table>
         <title>Supported Types for Parameter Maps and Result Maps
         (.NET)</title>
 
@@ -2760,6 +2842,133 @@
 
               <entry>Ulong, ulong</entry>
             </row>
+
+			<row>
+              <entry>Nullable&lt;bool&gt;</entry>
+
+              <entry>Yes</entry>
+
+              <entry>Yes</entry>
+
+              <entry>bool?</entry>
+            </row>
+			<row>
+              <entry>Nullable&lt;byte&gt;</entry>
+
+              <entry>Yes</entry>
+
+              <entry>Yes</entry>
+
+              <entry>byte?</entry>
+            </row>
+			<row>
+              <entry>Nullable&lt;char&gt;</entry>
+
+              <entry>Yes</entry>
+
+              <entry>Yes</entry>
+
+              <entry>char?</entry>
+            </row>
+			<row>
+              <entry>Nullable&lt;DateTime&gt;</entry>
+
+              <entry>Yes</entry>
+
+              <entry>Yes</entry>
+
+              <entry>DateTime?</entry>
+            </row>
+			<row>
+              <entry>Nullable&lt;decimal&gt;</entry>
+
+              <entry>Yes</entry>
+
+              <entry>Yes</entry>
+
+              <entry>decimal?</entry>
+            </row>
+			<row>
+              <entry>Nullable&lt;double&gt;</entry>
+
+              <entry>Yes</entry>
+
+              <entry>Yes</entry>
+
+              <entry>double?</entry>
+            </row>
+			<row>
+              <entry>Nullable&lt;Int16&gt;</entry>
+
+              <entry>Yes</entry>
+
+              <entry>Yes</entry>
+
+              <entry>Int16?</entry>
+            </row>
+			<row>
+              <entry>Nullable&lt;Int32&gt;</entry>
+
+              <entry>Yes</entry>
+
+              <entry>Yes</entry>
+
+              <entry>Int32?</entry>
+            </row>
+			<row>
+              <entry>Nullable&lt;Int64&gt;</entry>
+
+              <entry>Yes</entry>
+
+              <entry>Yes</entry>
+
+              <entry>Int64?</entry>
+            </row>
+			<row>
+              <entry>Nullable&lt;SByte&gt;</entry>
+
+              <entry>Yes</entry>
+
+              <entry>Yes</entry>
+
+              <entry>SByte?</entry>
+            </row>
+			<row>
+              <entry>Nullable&lt;Single&gt;</entry>
+
+              <entry>Yes</entry>
+
+              <entry>Yes</entry>
+
+              <entry>Single?</entry>
+            </row>
+			<row>
+              <entry>Nullable&lt;UInt16&gt;</entry>
+
+              <entry>Yes</entry>
+
+              <entry>Yes</entry>
+
+              <entry>UInt16?</entry>
+            </row>
+			<row>
+              <entry>Nullable&lt;UInt32&gt;</entry>
+
+              <entry>Yes</entry>
+
+              <entry>Yes</entry>
+
+              <entry>UInt32?</entry>
+            </row>
+			<row>
+              <entry>Nullable&lt;UInt64&gt;</entry>
+
+              <entry>Yes</entry>
+
+              <entry>Yes</entry>
+
+              <entry>UInt64?</entry>
+            </row>
           </tbody>
         </tgroup>
       </table></para>
@@ -2773,6 +2982,10 @@
     System.Data.OracleClient assemblies. See the .NET Developer Guide section
     on configuring the DataMapper to work with your provider's DbTypes.</para>
 
+	<note>
+	<para>Nuallable type from .NET 2.0 are fully supported by iBATIS.NET.</para>
+	</note>
+
     <para>The .NET Framework data provider type of a Parameter object is
     inferred from the .NET Framework type of the Value of the Parameter
     object, or from the DbType of the Parameter object. The following table
@@ -2817,7 +3030,7 @@
             </row>
 
             <row>
-              <entry>Boolean</entry>
+              <entry>Boolean, bool?</entry>
 
               <entry>Yes</entry>
 
@@ -2831,9 +3044,9 @@
             </row>
 
             <row>
-              <entry>Byte</entry>
+              <entry>Byte, byte?</entry>
 
-              <entry>-</entry>
+              <entry>Yes</entry>
 
               <entry>TinyInt</entry>
 
@@ -2845,7 +3058,7 @@
             </row>
 
             <row>
-              <entry>DateTime</entry>
+              <entry>DateTime, DateTime?</entry>
 
               <entry>Yes</entry>
 
@@ -2859,7 +3072,7 @@
             </row>
 
             <row>
-              <entry>char</entry>
+              <entry>char, char?</entry>
 
               <entry>Yes</entry>
 
@@ -2873,7 +3086,7 @@
             </row>
 
             <row>
-              <entry>Decimal</entry>
+              <entry>Decimal, decimal?</entry>
 
               <entry>Yes</entry>
 
@@ -2887,7 +3100,7 @@
             </row>
 
             <row>
-              <entry>Double</entry>
+              <entry>Double, double?</entry>
 
               <entry>Yes</entry>
 
@@ -2901,7 +3114,7 @@
             </row>
 
             <row>
-              <entry>Guid</entry>
+              <entry>Guid, Guid?</entry>
 
               <entry>Yes</entry>
 
@@ -2915,7 +3128,7 @@
             </row>
 
             <row>
-              <entry>Int16</entry>
+              <entry>Int16, Int16?</entry>
 
               <entry>Yes</entry>
 
@@ -2929,7 +3142,7 @@
             </row>
 
             <row>
-              <entry>Int32</entry>
+              <entry>Int32, Int32?</entry>
 
               <entry>Yes</entry>
 
@@ -2943,7 +3156,7 @@
             </row>
 
             <row>
-              <entry>Int64</entry>
+              <entry>Int64, Int64?</entry>
 
               <entry>Yes</entry>
 
@@ -2957,7 +3170,7 @@
             </row>
 
             <row>
-              <entry>Single</entry>
+              <entry>Single, Single?</entry>
 
               <entry>Yes</entry>
 
@@ -2999,7 +3212,7 @@
             </row>
 
             <row>
-              <entry>UInt16</entry>
+              <entry>UInt16, UInt16?</entry>
 
               <entry>yes</entry>
 
@@ -3013,7 +3226,7 @@
             </row>
 
             <row>
-              <entry>UInt32</entry>
+              <entry>UInt32, UInt32?</entry>
 
               <entry>yes</entry>
 
@@ -3027,7 +3240,7 @@
             </row>
 
             <row>
-              <entry>UInt64</entry>
+              <entry>UInt64, UInt64?</entry>
 
               <entry>yes</entry>