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 2005/10/26 20:04:27 UTC
svn commit: r328694 - in /ibatis/trunk/cs/mapper:
IBatisNet.Common/Utilities/Objects/
IBatisNet.DataMapper.Test/Maps/Access/OleDb/
IBatisNet.DataMapper.Test/Maps/MSSQL/Odbc/
IBatisNet.DataMapper.Test/Maps/MSSQL/OleDb/
IBatisNet.DataMapper.Test/Maps/MSS...
Author: gbayon
Date: Wed Oct 26 11:03:52 2005
New Revision: 328694
URL: http://svn.apache.org/viewcvs?rev=328694&view=rev
Log:
- Added support for Implicit Result Maps as
<result property='author.firstName’ column=” Persons.FirstName”/>
or
SELECT Persons.FirstName as 'author.firstName’
Modified:
ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/ObjectProbe.cs
ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/ReflectionInfo.cs
ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/Access/OleDb/Order.xml
ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/Odbc/Order.xml
ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/OleDb/Order.xml
ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/Order.xml
ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MySql/ByteFx/Order.xml
ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MySql/MySql/Order.xml
ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/Oracle/ODP/Order.xml
ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/Oracle/OracleClient/Order.xml
ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/PostgreSQL/Npgsql/Order.xml
ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/ResultMapTest.cs
ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ResultMapping/ResultMap.cs
ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ResultMapping/ResultProperty.cs
ibatis/trunk/cs/mapper/IBatisNet.DataMapper/MappedStatements/MappedStatement.cs
Modified: ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/ObjectProbe.cs
URL: http://svn.apache.org/viewcvs/ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/ObjectProbe.cs?rev=328694&r1=328693&r2=328694&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/ObjectProbe.cs (original)
+++ ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/ObjectProbe.cs Wed Oct 26 11:03:52 2005
@@ -99,7 +99,7 @@
/// <param name="obj">The object to check</param>
/// <param name="propertyName">The name of the property</param>
/// <returns>The type of the property</returns>
- private static Type GetPropertyTypeForSetter(object obj, string propertyName)
+ public static Type GetPropertyTypeForSetter(object obj, string propertyName)
{
Type type = obj.GetType();
@@ -243,11 +243,39 @@
return type;
}
+ /// <summary>
+ /// Returns the PropertyInfo of the set property on the specified type.
+ /// </summary>
+ /// <param name="type">The type to check</param>
+ /// <param name="propertyName">The name of the property</param>
+ /// <returns>The type of the property</returns>
+ public static PropertyInfo GetPropertyInfoForSetter(Type type, string propertyName)
+ {
+ PropertyInfo propertyInfo =null;
+ if (propertyName.IndexOf('.') > -1)
+ {
+ StringTokenizer parser = new StringTokenizer(propertyName, ".");
+ IEnumerator enumerator = parser.GetEnumerator();
+ Type parentType = null;
+ while (enumerator.MoveNext())
+ {
+ propertyName = (string)enumerator.Current;
+ parentType = type;
+ type = ReflectionInfo.GetInstance(type).GetSetterType(propertyName);
+ }
+ propertyInfo = ReflectionInfo.GetInstance(parentType).GetSetter(propertyName);
+ }
+ else
+ {
+ propertyInfo = ReflectionInfo.GetInstance(type).GetSetter(propertyName);
+ }
+
+ return propertyInfo;
+ }
private static object GetArrayProperty(object obj, string indexedName)
{
-
object value = null;
try
@@ -614,7 +642,6 @@
return hasProperty;
}
-
/// <summary>
///
Modified: ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/ReflectionInfo.cs
URL: http://svn.apache.org/viewcvs/ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/ReflectionInfo.cs?rev=328694&r1=328693&r2=328694&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/ReflectionInfo.cs (original)
+++ ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/ReflectionInfo.cs Wed Oct 26 11:03:52 2005
@@ -170,10 +170,12 @@
public PropertyInfo GetSetter(string propertyName)
{
PropertyInfo propertyInfo = (PropertyInfo) _setProperties[propertyName];
+
if (propertyInfo == null)
{
throw new ProbeException("There is no Set property named '" + propertyName + "' in class '" + _className + "'");
- }
+ }
+
return propertyInfo;
}
@@ -289,6 +291,34 @@
}
}
+// /// <summary>
+// /// Returns the type that the get expects to receive as a parameter when
+// /// setting a property value.
+// /// </summary>
+// /// <param name="type">The type to check</param>
+// /// <param name="propertyName">The name of the property</param>
+// /// <returns>The type of the property</returns>
+// public static ReflectionInfo GetReflectionInfoForGetter(Type type, string propertyName)
+// {
+// ReflectionInfo reflectionInfo = null;
+// if (propertyName.IndexOf('.') > -1)
+// {
+// StringTokenizer parser = new StringTokenizer(propertyName, ".");
+// IEnumerator enumerator = parser.GetEnumerator();
+//
+// while (enumerator.MoveNext())
+// {
+// propertyName = (string)enumerator.Current;
+// type = ReflectionInfo.GetInstance(type).GetGetterType(propertyName);
+// }
+// }
+// else
+// {
+// reflectionInfo = ReflectionInfo.GetInstance(type);
+// }
+//
+// return type;
+// }
/// <summary>
/// Gets an instance of ReflectionInfo for the specified type.
Modified: ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/Access/OleDb/Order.xml
URL: http://svn.apache.org/viewcvs/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/Access/OleDb/Order.xml?rev=328694&r1=328693&r2=328694&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/Access/OleDb/Order.xml (original)
+++ ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/Access/OleDb/Order.xml Wed Oct 26 11:03:52 2005
@@ -153,6 +153,22 @@
<result property="FavouriteLineItem" resultMapping="LineItem.LineItem" />
</resultMap>
+ <resultMap id="order-joined-favourite2" class="Order">
+ <result property="Id" column="Order_ID"/>
+ <result property="Date" column="Order_Date"/>
+ <result property="CardExpiry" column="Order_CardExpiry"/>
+ <result property="CardType" column="Order_CardType"/>
+ <result property="CardNumber" column="Order_CardNumber"/>
+ <result property="Street" column="Order_Street"/>
+ <result property="City" column="Order_City"/>
+ <result property="Province" column="Order_Province"/>
+ <result property="PostalCode" column="Order_PostalCode"/>
+ <result property="FavouriteLineItem.Id" column="LineItem_ID"/>
+ <result property="FavouriteLineItem.Code" column="LineItem_Code"/>
+ <result property="FavouriteLineItem.Quantity" column="LineItem_Quantity"/>
+ <result property="FavouriteLineItem.Price" column="LineItem_Price"/>
+ </resultMap>
+
<resultMap id="order-joined-with-account" class="Order">
<result property="Id" column="Order_ID"/>
<result property="Date" column="Order_Date" nullValue="01/01/0001 00:00:00"/>
@@ -256,6 +272,38 @@
and Orders.Order_ID = #value#
</statement>
+ <statement id="GetOrderJoinedFavourite2"
+ parameterClass="Integer"
+ resultMap="order-joined-favourite2" >
+ select * from Orders, LineItems
+ where Orders.Order_ID = LineItems.Order_ID
+ and Order_FavouriteLineItem = LineItems.LineItem_ID
+ and Orders.Order_ID = #value#
+ </statement>
+
+ <statement id="GetOrderJoinedFavourite3"
+ parameterClass="Integer"
+ resultClass="Order" >
+ select
+ Orders.Order_ID as Id,
+ Order_Date as Date,
+ Order_CardExpiry as CardExpiry,
+ Order_CardType as CardType,
+ Order_CardNumber as CardNumber,
+ Order_Street as Street,
+ Order_City as City,
+ Order_Province as Province,
+ Order_PostalCode as PostalCode,
+ LineItem_ID as "FavouriteLineItem.Id",
+ LineItem_Code as "FavouriteLineItem.Code",
+ LineItem_Quantity as "FavouriteLineItem.Quantity",
+ LineItem_Price as "FavouriteLineItem.Price"
+ from Orders, LineItems
+ where Orders.Order_ID = LineItems.Order_ID
+ and Order_FavouriteLineItem = LineItems.LineItem_ID
+ and Orders.Order_ID = #value#
+ </statement>
+
<statement id="GetOrderWithFavouriteLineItem"
parameterClass="int"
resultMap="order-with-favourite-line-item" >
Modified: ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/Odbc/Order.xml
URL: http://svn.apache.org/viewcvs/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/Odbc/Order.xml?rev=328694&r1=328693&r2=328694&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/Odbc/Order.xml (original)
+++ ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/Odbc/Order.xml Wed Oct 26 11:03:52 2005
@@ -152,7 +152,6 @@
column="Order_ID=Order_ID,LineItem_ID=Order_FavouriteLineItem"
select="GetDynSpecificLineItem" />
</resultMap>
-
<resultMap id="order-joined-favourite" class="Order">
<result property="Id" column="Order_ID"/>
<result property="Date" column="Order_Date"/>
@@ -165,6 +164,22 @@
<result property="PostalCode" column="Order_PostalCode"/>
<result property="FavouriteLineItem" resultMapping="LineItem.LineItem" />
</resultMap>
+
+ <resultMap id="order-joined-favourite2" class="Order">
+ <result property="Id" column="Order_ID"/>
+ <result property="Date" column="Order_Date"/>
+ <result property="CardExpiry" column="Order_CardExpiry"/>
+ <result property="CardType" column="Order_CardType"/>
+ <result property="CardNumber" column="Order_CardNumber"/>
+ <result property="Street" column="Order_Street"/>
+ <result property="City" column="Order_City"/>
+ <result property="Province" column="Order_Province"/>
+ <result property="PostalCode" column="Order_PostalCode"/>
+ <result property="FavouriteLineItem.Id" column="LineItem_ID"/>
+ <result property="FavouriteLineItem.Code" column="LineItem_Code"/>
+ <result property="FavouriteLineItem.Quantity" column="LineItem_Quantity"/>
+ <result property="FavouriteLineItem.Price" column="LineItem_Price"/>
+ </resultMap>
<resultMap id="order-joined-with-account" class="Order">
<result property="Id" column="Order_ID"/>
@@ -268,6 +283,38 @@
parameterClass="Integer"
resultMap="order-joined-favourite" >
select * from Orders, LineItems
+ where Orders.Order_ID = LineItems.Order_ID
+ and Order_FavouriteLineItem = LineItems.LineItem_ID
+ and Orders.Order_ID = #value#
+ </statement>
+
+ <statement id="GetOrderJoinedFavourite2"
+ parameterClass="Integer"
+ resultMap="order-joined-favourite2" >
+ select * from Orders, LineItems
+ where Orders.Order_ID = LineItems.Order_ID
+ and Order_FavouriteLineItem = LineItems.LineItem_ID
+ and Orders.Order_ID = #value#
+ </statement>
+
+ <statement id="GetOrderJoinedFavourite3"
+ parameterClass="Integer"
+ resultClass="Order" >
+ select
+ Orders.Order_ID as Id,
+ Order_Date as Date,
+ Order_CardExpiry as CardExpiry,
+ Order_CardType as CardType,
+ Order_CardNumber as CardNumber,
+ Order_Street as Street,
+ Order_City as City,
+ Order_Province as Province,
+ Order_PostalCode as PostalCode,
+ LineItem_ID as "FavouriteLineItem.Id",
+ LineItem_Code as "FavouriteLineItem.Code",
+ LineItem_Quantity as "FavouriteLineItem.Quantity",
+ LineItem_Price as "FavouriteLineItem.Price"
+ from Orders, LineItems
where Orders.Order_ID = LineItems.Order_ID
and Order_FavouriteLineItem = LineItems.LineItem_ID
and Orders.Order_ID = #value#
Modified: ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/OleDb/Order.xml
URL: http://svn.apache.org/viewcvs/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/OleDb/Order.xml?rev=328694&r1=328693&r2=328694&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/OleDb/Order.xml (original)
+++ ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/OleDb/Order.xml Wed Oct 26 11:03:52 2005
@@ -166,6 +166,22 @@
<result property="FavouriteLineItem" resultMapping="LineItem.LineItem" />
</resultMap>
+ <resultMap id="order-joined-favourite2" class="Order">
+ <result property="Id" column="Order_ID"/>
+ <result property="Date" column="Order_Date"/>
+ <result property="CardExpiry" column="Order_CardExpiry"/>
+ <result property="CardType" column="Order_CardType"/>
+ <result property="CardNumber" column="Order_CardNumber"/>
+ <result property="Street" column="Order_Street"/>
+ <result property="City" column="Order_City"/>
+ <result property="Province" column="Order_Province"/>
+ <result property="PostalCode" column="Order_PostalCode"/>
+ <result property="FavouriteLineItem.Id" column="LineItem_ID"/>
+ <result property="FavouriteLineItem.Code" column="LineItem_Code"/>
+ <result property="FavouriteLineItem.Quantity" column="LineItem_Quantity"/>
+ <result property="FavouriteLineItem.Price" column="LineItem_Price"/>
+ </resultMap>
+
<resultMap id="order-joined-with-account" class="Order">
<result property="Id" column="Order_ID"/>
<result property="Date" column="Order_Date" nullValue="01/01/0001 00:00:00"/>
@@ -270,6 +286,38 @@
and Order_FavouriteLineItem = LineItems.LineItem_ID
and Orders.Order_ID = #value#
</statement>
+
+ <statement id="GetOrderJoinedFavourite2"
+ parameterClass="Integer"
+ resultMap="order-joined-favourite2" >
+ select * from Orders, LineItems
+ where Orders.Order_ID = LineItems.Order_ID
+ and Order_FavouriteLineItem = LineItems.LineItem_ID
+ and Orders.Order_ID = #value#
+ </statement>
+
+ <statement id="GetOrderJoinedFavourite3"
+ parameterClass="Integer"
+ resultClass="Order" >
+ select
+ Orders.Order_ID as Id,
+ Order_Date as Date,
+ Order_CardExpiry as CardExpiry,
+ Order_CardType as CardType,
+ Order_CardNumber as CardNumber,
+ Order_Street as Street,
+ Order_City as City,
+ Order_Province as Province,
+ Order_PostalCode as PostalCode,
+ LineItem_ID as "FavouriteLineItem.Id",
+ LineItem_Code as "FavouriteLineItem.Code",
+ LineItem_Quantity as "FavouriteLineItem.Quantity",
+ LineItem_Price as "FavouriteLineItem.Price"
+ from Orders, LineItems
+ where Orders.Order_ID = LineItems.Order_ID
+ and Order_FavouriteLineItem = LineItems.LineItem_ID
+ and Orders.Order_ID = #value#
+ </statement>
<statement id="GetOrderWithFavouriteLineItem"
parameterClass="int"
Modified: ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/Order.xml
URL: http://svn.apache.org/viewcvs/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/Order.xml?rev=328694&r1=328693&r2=328694&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/Order.xml (original)
+++ ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/Order.xml Wed Oct 26 11:03:52 2005
@@ -143,6 +143,22 @@
<result property="FavouriteLineItem" column="Order_ID=Order_ID,LineItem_ID=Order_FavouriteLineItem" select="GetSpecificLineItem" />
</resultMap>
+ <resultMap id="order-joined-favourite2" class="Order">
+ <result property="Id" column="Order_ID"/>
+ <result property="Date" column="Order_Date"/>
+ <result property="CardExpiry" column="Order_CardExpiry"/>
+ <result property="CardType" column="Order_CardType"/>
+ <result property="CardNumber" column="Order_CardNumber"/>
+ <result property="Street" column="Order_Street"/>
+ <result property="City" column="Order_City"/>
+ <result property="Province" column="Order_Province"/>
+ <result property="PostalCode" column="Order_PostalCode"/>
+ <result property="FavouriteLineItem.Id" column="LineItem_ID"/>
+ <result property="FavouriteLineItem.Code" column="LineItem_Code"/>
+ <result property="FavouriteLineItem.Quantity" column="LineItem_Quantity"/>
+ <result property="FavouriteLineItem.Price" column="LineItem_Price"/>
+ </resultMap>
+
<resultMap id="order-with-dyn-favourite-line-item" class="Order">
<result property="Id" column="Order_ID"/>
<result property="Date" column="Order_Date"/>
@@ -284,6 +300,38 @@
and Orders.Order_ID = #value#
</statement>
+ <statement id="GetOrderJoinedFavourite2"
+ parameterClass="Integer"
+ resultMap="order-joined-favourite2" >
+ select * from Orders, LineItems
+ where Orders.Order_ID = LineItems.Order_ID
+ and Order_FavouriteLineItem = LineItems.LineItem_ID
+ and Orders.Order_ID = #value#
+ </statement>
+
+ <statement id="GetOrderJoinedFavourite3"
+ parameterClass="Integer"
+ resultClass="Order" >
+ select
+ Orders.Order_ID as Id,
+ Order_Date as Date,
+ Order_CardExpiry as CardExpiry,
+ Order_CardType as CardType,
+ Order_CardNumber as CardNumber,
+ Order_Street as Street,
+ Order_City as City,
+ Order_Province as Province,
+ Order_PostalCode as PostalCode,
+ LineItem_ID as "FavouriteLineItem.Id",
+ LineItem_Code as "FavouriteLineItem.Code",
+ LineItem_Quantity as "FavouriteLineItem.Quantity",
+ LineItem_Price as "FavouriteLineItem.Price"
+ from Orders, LineItems
+ where Orders.Order_ID = LineItems.Order_ID
+ and Order_FavouriteLineItem = LineItems.LineItem_ID
+ and Orders.Order_ID = #value#
+ </statement>
+
<statement id="GetOrderWithFavouriteLineItem"
parameterClass="int"
resultMap="order-with-favourite-line-item" >
Modified: ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MySql/ByteFx/Order.xml
URL: http://svn.apache.org/viewcvs/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MySql/ByteFx/Order.xml?rev=328694&r1=328693&r2=328694&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MySql/ByteFx/Order.xml (original)
+++ ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MySql/ByteFx/Order.xml Wed Oct 26 11:03:52 2005
@@ -153,6 +153,22 @@
<result property="FavouriteLineItem" resultMapping="LineItem.LineItem" />
</resultMap>
+ <resultMap id="order-joined-favourite2" class="Order">
+ <result property="Id" column="Order_ID"/>
+ <result property="Date" column="Order_Date"/>
+ <result property="CardExpiry" column="Order_CardExpiry"/>
+ <result property="CardType" column="Order_CardType"/>
+ <result property="CardNumber" column="Order_CardNumber"/>
+ <result property="Street" column="Order_Street"/>
+ <result property="City" column="Order_City"/>
+ <result property="Province" column="Order_Province"/>
+ <result property="PostalCode" column="Order_PostalCode"/>
+ <result property="FavouriteLineItem.Id" column="LineItem_ID"/>
+ <result property="FavouriteLineItem.Code" column="LineItem_Code"/>
+ <result property="FavouriteLineItem.Quantity" column="LineItem_Quantity"/>
+ <result property="FavouriteLineItem.Price" column="LineItem_Price"/>
+ </resultMap>
+
<resultMap id="order-joined-with-account" class="Order">
<result property="Id" column="Order_ID"/>
<result property="Date" column="Order_Date" nullValue="01/01/0001 00:00:00"/>
@@ -253,6 +269,38 @@
and Orders.Order_ID = #value#
</statement>
+ <statement id="GetOrderJoinedFavourite2"
+ parameterClass="Integer"
+ resultMap="order-joined-favourite2" >
+ select * from Orders, LineItems
+ where Orders.Order_ID = LineItems.Order_ID
+ and Order_FavouriteLineItem = LineItems.LineItem_ID
+ and Orders.Order_ID = #value#
+ </statement>
+
+ <statement id="GetOrderJoinedFavourite3"
+ parameterClass="Integer"
+ resultClass="Order" >
+ select
+ Orders.Order_ID as Id,
+ Order_Date as Date,
+ Order_CardExpiry as CardExpiry,
+ Order_CardType as CardType,
+ Order_CardNumber as CardNumber,
+ Order_Street as Street,
+ Order_City as City,
+ Order_Province as Province,
+ Order_PostalCode as PostalCode,
+ LineItem_ID as "FavouriteLineItem.Id",
+ LineItem_Code as "FavouriteLineItem.Code",
+ LineItem_Quantity as "FavouriteLineItem.Quantity",
+ LineItem_Price as "FavouriteLineItem.Price"
+ from Orders, LineItems
+ where Orders.Order_ID = LineItems.Order_ID
+ and Order_FavouriteLineItem = LineItems.LineItem_ID
+ and Orders.Order_ID = #value#
+ </statement>
+
<statement id="GetOrderWithFavouriteLineItem"
parameterClass="int"
resultMap="order-with-favourite-line-item" >
Modified: ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MySql/MySql/Order.xml
URL: http://svn.apache.org/viewcvs/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MySql/MySql/Order.xml?rev=328694&r1=328693&r2=328694&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MySql/MySql/Order.xml (original)
+++ ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MySql/MySql/Order.xml Wed Oct 26 11:03:52 2005
@@ -157,6 +157,22 @@
<result property="FavouriteLineItem" resultMapping="LineItem.LineItem" />
</resultMap>
+ <resultMap id="order-joined-favourite2" class="Order">
+ <result property="Id" column="Order_ID"/>
+ <result property="Date" column="Order_Date"/>
+ <result property="CardExpiry" column="Order_CardExpiry"/>
+ <result property="CardType" column="Order_CardType"/>
+ <result property="CardNumber" column="Order_CardNumber"/>
+ <result property="Street" column="Order_Street"/>
+ <result property="City" column="Order_City"/>
+ <result property="Province" column="Order_Province"/>
+ <result property="PostalCode" column="Order_PostalCode"/>
+ <result property="FavouriteLineItem.Id" column="LineItem_ID"/>
+ <result property="FavouriteLineItem.Code" column="LineItem_Code"/>
+ <result property="FavouriteLineItem.Quantity" column="LineItem_Quantity"/>
+ <result property="FavouriteLineItem.Price" column="LineItem_Price"/>
+ </resultMap>
+
<resultMap id="order-joined-with-account" class="Order">
<result property="Id" column="Order_ID"/>
<result property="Date" column="Order_Date" nullValue="01/01/0001 00:00:00"/>
@@ -251,7 +267,39 @@
and Order_FavouriteLineItem = LineItems.LineItem_ID
and Orders.Order_ID = #value#
</statement>
-
+
+ <statement id="GetOrderJoinedFavourite2"
+ parameterClass="Integer"
+ resultMap="order-joined-favourite2" >
+ select * from Orders, LineItems
+ where Orders.Order_ID = LineItems.Order_ID
+ and Order_FavouriteLineItem = LineItems.LineItem_ID
+ and Orders.Order_ID = #value#
+ </statement>
+
+ <statement id="GetOrderJoinedFavourite3"
+ parameterClass="Integer"
+ resultClass="Order" >
+ select
+ Orders.Order_ID as Id,
+ Order_Date as Date,
+ Order_CardExpiry as CardExpiry,
+ Order_CardType as CardType,
+ Order_CardNumber as CardNumber,
+ Order_Street as Street,
+ Order_City as City,
+ Order_Province as Province,
+ Order_PostalCode as PostalCode,
+ LineItem_ID as "FavouriteLineItem.Id",
+ LineItem_Code as "FavouriteLineItem.Code",
+ LineItem_Quantity as "FavouriteLineItem.Quantity",
+ LineItem_Price as "FavouriteLineItem.Price"
+ from Orders, LineItems
+ where Orders.Order_ID = LineItems.Order_ID
+ and Order_FavouriteLineItem = LineItems.LineItem_ID
+ and Orders.Order_ID = #value#
+ </statement>
+
<statement id="GetOrderWithFavouriteLineItem"
parameterClass="int"
resultMap="order-with-favourite-line-item" >
Modified: ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/Oracle/ODP/Order.xml
URL: http://svn.apache.org/viewcvs/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/Oracle/ODP/Order.xml?rev=328694&r1=328693&r2=328694&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/Oracle/ODP/Order.xml (original)
+++ ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/Oracle/ODP/Order.xml Wed Oct 26 11:03:52 2005
@@ -153,6 +153,22 @@
<result property="FavouriteLineItem" resultMapping="LineItem.LineItem" />
</resultMap>
+ <resultMap id="order-joined-favourite2" class="Order">
+ <result property="Id" column="Order_ID"/>
+ <result property="Date" column="Order_Date"/>
+ <result property="CardExpiry" column="Order_CardExpiry"/>
+ <result property="CardType" column="Order_CardType"/>
+ <result property="CardNumber" column="Order_CardNumber"/>
+ <result property="Street" column="Order_Street"/>
+ <result property="City" column="Order_City"/>
+ <result property="Province" column="Order_Province"/>
+ <result property="PostalCode" column="Order_PostalCode"/>
+ <result property="FavouriteLineItem.Id" column="LineItem_ID"/>
+ <result property="FavouriteLineItem.Code" column="LineItem_Code"/>
+ <result property="FavouriteLineItem.Quantity" column="LineItem_Quantity"/>
+ <result property="FavouriteLineItem.Price" column="LineItem_Price"/>
+ </resultMap>
+
<resultMap id="order-joined-with-account" class="Order">
<result property="Id" column="Order_ID"/>
<result property="Date" column="Order_Date" nullValue="01/01/0001 00:00:00"/>
@@ -253,6 +269,38 @@
and Orders.Order_ID = #value#
</statement>
+ <statement id="GetOrderJoinedFavourite2"
+ parameterClass="Integer"
+ resultMap="order-joined-favourite2" >
+ select * from Orders, LineItems
+ where Orders.Order_ID = LineItems.Order_ID
+ and Order_FavouriteLineItem = LineItems.LineItem_ID
+ and Orders.Order_ID = #value#
+ </statement>
+
+ <statement id="GetOrderJoinedFavourite3"
+ parameterClass="Integer"
+ resultClass="Order" >
+ select
+ Orders.Order_ID as Id,
+ Order_Date as Date,
+ Order_CardExpiry as CardExpiry,
+ Order_CardType as CardType,
+ Order_CardNumber as CardNumber,
+ Order_Street as Street,
+ Order_City as City,
+ Order_Province as Province,
+ Order_PostalCode as PostalCode,
+ LineItem_ID as "FavouriteLineItem.Id",
+ LineItem_Code as "FavouriteLineItem.Code",
+ LineItem_Quantity as "FavouriteLineItem.Quantity",
+ LineItem_Price as "FavouriteLineItem.Price"
+ from Orders, LineItems
+ where Orders.Order_ID = LineItems.Order_ID
+ and Order_FavouriteLineItem = LineItems.LineItem_ID
+ and Orders.Order_ID = #value#
+ </statement>
+
<statement id="GetOrderWithFavouriteLineItem"
parameterClass="int"
resultMap="order-with-favourite-line-item" >
Modified: ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/Oracle/OracleClient/Order.xml
URL: http://svn.apache.org/viewcvs/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/Oracle/OracleClient/Order.xml?rev=328694&r1=328693&r2=328694&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/Oracle/OracleClient/Order.xml (original)
+++ ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/Oracle/OracleClient/Order.xml Wed Oct 26 11:03:52 2005
@@ -153,6 +153,22 @@
<result property="FavouriteLineItem" resultMapping="LineItem.LineItem" />
</resultMap>
+ <resultMap id="order-joined-favourite2" class="Order">
+ <result property="Id" column="Order_ID"/>
+ <result property="Date" column="Order_Date"/>
+ <result property="CardExpiry" column="Order_CardExpiry"/>
+ <result property="CardType" column="Order_CardType"/>
+ <result property="CardNumber" column="Order_CardNumber"/>
+ <result property="Street" column="Order_Street"/>
+ <result property="City" column="Order_City"/>
+ <result property="Province" column="Order_Province"/>
+ <result property="PostalCode" column="Order_PostalCode"/>
+ <result property="FavouriteLineItem.Id" column="LineItem_ID"/>
+ <result property="FavouriteLineItem.Code" column="LineItem_Code"/>
+ <result property="FavouriteLineItem.Quantity" column="LineItem_Quantity"/>
+ <result property="FavouriteLineItem.Price" column="LineItem_Price"/>
+ </resultMap>
+
<resultMap id="order-joined-with-account" class="Order">
<result property="Id" column="Order_ID"/>
<result property="Date" column="Order_Date" nullValue="01/01/0001 00:00:00"/>
@@ -253,6 +269,38 @@
and Orders.Order_ID = #value#
</statement>
+ <statement id="GetOrderJoinedFavourite2"
+ parameterClass="Integer"
+ resultMap="order-joined-favourite2" >
+ select * from Orders, LineItems
+ where Orders.Order_ID = LineItems.Order_ID
+ and Order_FavouriteLineItem = LineItems.LineItem_ID
+ and Orders.Order_ID = #value#
+ </statement>
+
+ <statement id="GetOrderJoinedFavourite3"
+ parameterClass="Integer"
+ resultClass="Order" >
+ select
+ Orders.Order_ID as Id,
+ Order_Date as Date,
+ Order_CardExpiry as CardExpiry,
+ Order_CardType as CardType,
+ Order_CardNumber as CardNumber,
+ Order_Street as Street,
+ Order_City as City,
+ Order_Province as Province,
+ Order_PostalCode as PostalCode,
+ LineItem_ID as "FavouriteLineItem.Id",
+ LineItem_Code as "FavouriteLineItem.Code",
+ LineItem_Quantity as "FavouriteLineItem.Quantity",
+ LineItem_Price as "FavouriteLineItem.Price"
+ from Orders, LineItems
+ where Orders.Order_ID = LineItems.Order_ID
+ and Order_FavouriteLineItem = LineItems.LineItem_ID
+ and Orders.Order_ID = #value#
+ </statement>
+
<statement id="GetOrderWithFavouriteLineItem"
parameterClass="int"
resultMap="order-with-favourite-line-item" >
Modified: ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/PostgreSQL/Npgsql/Order.xml
URL: http://svn.apache.org/viewcvs/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/PostgreSQL/Npgsql/Order.xml?rev=328694&r1=328693&r2=328694&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/PostgreSQL/Npgsql/Order.xml (original)
+++ ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/PostgreSQL/Npgsql/Order.xml Wed Oct 26 11:03:52 2005
@@ -153,6 +153,22 @@
<result property="FavouriteLineItem" resultMapping="LineItem.LineItem" />
</resultMap>
+ <resultMap id="order-joined-favourite2" class="Order">
+ <result property="Id" column="Order_ID"/>
+ <result property="Date" column="Order_Date"/>
+ <result property="CardExpiry" column="Order_CardExpiry"/>
+ <result property="CardType" column="Order_CardType"/>
+ <result property="CardNumber" column="Order_CardNumber"/>
+ <result property="Street" column="Order_Street"/>
+ <result property="City" column="Order_City"/>
+ <result property="Province" column="Order_Province"/>
+ <result property="PostalCode" column="Order_PostalCode"/>
+ <result property="FavouriteLineItem.Id" column="LineItem_ID"/>
+ <result property="FavouriteLineItem.Code" column="LineItem_Code"/>
+ <result property="FavouriteLineItem.Quantity" column="LineItem_Quantity"/>
+ <result property="FavouriteLineItem.Price" column="LineItem_Price"/>
+ </resultMap>
+
<resultMap id="order-joined-with-account" class="Order">
<result property="Id" column="Order_ID"/>
<result property="Date" column="Order_Date" nullValue="01/01/0001 00:00:00"/>
@@ -253,6 +269,38 @@
and Orders.Order_ID = #value#
</statement>
+ <statement id="GetOrderJoinedFavourite2"
+ parameterClass="Integer"
+ resultMap="order-joined-favourite2" >
+ select * from Orders, LineItems
+ where Orders.Order_ID = LineItems.Order_ID
+ and Order_FavouriteLineItem = LineItems.LineItem_ID
+ and Orders.Order_ID = #value#
+ </statement>
+
+ <statement id="GetOrderJoinedFavourite3"
+ parameterClass="Integer"
+ resultClass="Order" >
+ select
+ Orders.Order_ID as Id,
+ Order_Date as Date,
+ Order_CardExpiry as CardExpiry,
+ Order_CardType as CardType,
+ Order_CardNumber as CardNumber,
+ Order_Street as Street,
+ Order_City as City,
+ Order_Province as Province,
+ Order_PostalCode as PostalCode,
+ LineItem_ID as "FavouriteLineItem.Id",
+ LineItem_Code as "FavouriteLineItem.Code",
+ LineItem_Quantity as "FavouriteLineItem.Quantity",
+ LineItem_Price as "FavouriteLineItem.Price"
+ from Orders, LineItems
+ where Orders.Order_ID = LineItems.Order_ID
+ and Order_FavouriteLineItem = LineItems.LineItem_ID
+ and Orders.Order_ID = #value#
+ </statement>
+
<statement id="GetOrderWithFavouriteLineItem"
parameterClass="int"
resultMap="order-with-favourite-line-item" >
Modified: ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/ResultMapTest.cs
URL: http://svn.apache.org/viewcvs/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/ResultMapTest.cs?rev=328694&r1=328693&r2=328694&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/ResultMapTest.cs (original)
+++ ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/ResultMapTest.cs Wed Oct 26 11:03:52 2005
@@ -290,6 +290,38 @@
}
/// <summary>
+ /// Test nested object.
+ /// Order + FavouriteLineItem in order.FavouriteLineItem
+ /// </summary>
+ [Test]
+ public void TestNestedObjects2()
+ {
+ Order order = (Order) sqlMap.QueryForObject("GetOrderJoinedFavourite2", 1);
+
+ AssertOrder1(order);
+
+ Assert.IsNotNull(order.FavouriteLineItem);
+ Assert.AreEqual(2, order.FavouriteLineItem.Id, "order.FavouriteLineItem.Id");
+ Assert.AreEqual("ESM-23", order.FavouriteLineItem.Code);
+ }
+
+ /// <summary>
+ /// Test Implicit Result Maps
+ /// </summary>
+ [Test]
+ public void TestImplicitResultMaps()
+ {
+ Order order = (Order) sqlMap.QueryForObject("GetOrderJoinedFavourite3", 1);
+
+ AssertOrder1(order);
+
+ Assert.IsNotNull(order.FavouriteLineItem);
+ Assert.AreEqual(2, order.FavouriteLineItem.Id, "order.FavouriteLineItem.Id");
+ Assert.AreEqual("ESM-23", order.FavouriteLineItem.Code);
+
+ }
+
+ /// <summary>
/// Test a composite Key Mapping.
/// It must be: property1=column1,property2=column2,...
/// </summary>
Modified: ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ResultMapping/ResultMap.cs
URL: http://svn.apache.org/viewcvs/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ResultMapping/ResultMap.cs?rev=328694&r1=328693&r2=328694&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ResultMapping/ResultMap.cs (original)
+++ ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ResultMapping/ResultMap.cs Wed Oct 26 11:03:52 2005
@@ -32,6 +32,7 @@
using System.Xml;
using System.Xml.Serialization;
using IBatisNet.Common.Exceptions;
+using IBatisNet.Common.Utilities.Objects;
using IBatisNet.Common.Utilities.TypesResolver;
using IBatisNet.DataMapper.Configuration.Serializers;
using IBatisNet.DataMapper.Scope;
@@ -315,7 +316,7 @@
if ( property.PropertyInfo != null )
{
- property.PropertyInfo.SetValue( target, dataBaseValue, null );
+ ObjectProbe.SetPropertyValue(target, property.PropertyName, dataBaseValue);
}
else // Primitive type ('value')
{
Modified: ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ResultMapping/ResultProperty.cs
URL: http://svn.apache.org/viewcvs/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ResultMapping/ResultProperty.cs?rev=328694&r1=328693&r2=328694&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ResultMapping/ResultProperty.cs (original)
+++ ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ResultMapping/ResultProperty.cs Wed Oct 26 11:03:52 2005
@@ -259,7 +259,7 @@
{
if ( _propertyName.Length>0 &&_propertyName != "value" && !typeof(IDictionary).IsAssignableFrom(resultClass) )
{
- _propertyInfo = ReflectionInfo.GetInstance(resultClass).GetSetter( _propertyName );
+ _propertyInfo = ObjectProbe.GetPropertyInfoForSetter(resultClass, _propertyName);
}
if (this.CallBackName!=null && this.CallBackName.Length >0)
Modified: ibatis/trunk/cs/mapper/IBatisNet.DataMapper/MappedStatements/MappedStatement.cs
URL: http://svn.apache.org/viewcvs/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/MappedStatements/MappedStatement.cs?rev=328694&r1=328693&r2=328694&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.DataMapper/MappedStatements/MappedStatement.cs (original)
+++ ibatis/trunk/cs/mapper/IBatisNet.DataMapper/MappedStatements/MappedStatement.cs Wed Oct 26 11:03:52 2005
@@ -35,7 +35,6 @@
using IBatisNet.Common.Logging;
using IBatisNet.Common.Utilities.Objects;
using IBatisNet.DataMapper.Commands;
-using IBatisNet.DataMapper.Configuration.Cache;
using IBatisNet.DataMapper.Configuration.ParameterMapping;
using IBatisNet.DataMapper.Configuration.ResultMapping;
using IBatisNet.DataMapper.Configuration.Statements;
@@ -744,7 +743,7 @@
object parameterObject,
string keyProperty,
string valueProperty,
- SqlMapper.DictionaryRowDelegate rowDelegate )
+ SqlMapper.DictionaryRowDelegate rowDelegate )
{
IDictionary map = new Hashtable();
@@ -1013,25 +1012,28 @@
{
if (dataBaseValue == null)
{
- if (property.PropertyInfo != null)
- {
- property.PropertyInfo.SetValue( target, null, null );
- }
- else
- {
- ObjectProbe.SetPropertyValue( target, property.PropertyName, null);
- }
+ ObjectProbe.SetPropertyValue( target, property.PropertyName, null);
+// if (property.PropertyInfo != null)
+// {
+// property.PropertyInfo.SetValue( target, null, null );
+// }
+// else
+// {
+// ObjectProbe.SetPropertyValue( target, property.PropertyName, null);
+// }
}
else
{
- if (property.PropertyInfo != null)
- {
- property.PropertyInfo.SetValue( target, dataBaseValue, null );
- }
- else
- {
- ObjectProbe.SetPropertyValue( target, property.PropertyName, dataBaseValue);
- }
+ ObjectProbe.SetPropertyValue(target, property.PropertyName, dataBaseValue);
+
+// if (property.PropertyInfo != null)
+// {
+// property.PropertyInfo.SetValue( target, dataBaseValue, null );
+// }
+// else
+// {
+// ObjectProbe.SetPropertyValue( target, property.PropertyName, dataBaseValue);
+// }
}
}
}
@@ -1130,33 +1132,60 @@
ResultProperty property = new ResultProperty();
property.ColumnName = columnName;
+ property.ColumnIndex = i;
- if (matchedPropertyInfo != null )
- {
- property.PropertyName = matchedPropertyInfo.Name;
- property.Initialize(typeHandlerFactory, matchedPropertyInfo );
- _resultMap.AddResultPropery(property);
- }
- else if (resultObject is Hashtable)
+ if (resultObject is Hashtable)
{
property.PropertyName = columnName;
_resultMap.AddResultPropery(property);
}
- // Fix for IBATISNET-73 (JIRA-73) from Ron Grabowski
- if (property.PropertyName != null && property.PropertyName.Length > 0)
+ Type propertyType = null;
+
+ if (matchedPropertyInfo == null )
{
- // Set TypeHandler
- Type propertyType = reflectionInfo.GetSetterType(property.PropertyName);
- property.TypeHandler = typeHandlerFactory.GetTypeHandler( propertyType );
+ try
+ {
+ propertyType = ObjectProbe.GetPropertyTypeForSetter(resultObject, columnName);
+ }
+ catch
+ {
+ _logger.Error("The column [" + columnName + "] could not be auto mapped to a property on [" + resultObject.ToString() + "]");
+ }
}
else
{
- if (_logger.IsDebugEnabled)
+ propertyType = reflectionInfo.GetSetterType(matchedPropertyInfo.Name);
+ }
+
+ if(propertyType != null || matchedPropertyInfo != null)
+ {
+ property.PropertyName = (matchedPropertyInfo != null ? matchedPropertyInfo.Name : columnName );
+ if (matchedPropertyInfo != null)
{
- _logger.Debug("The column [" + columnName + "] could not be auto mapped to a property on [" + resultObject.ToString() + "]");
+ property.Initialize(typeHandlerFactory, matchedPropertyInfo );
}
- }
+ else
+ {
+ property.TypeHandler = typeHandlerFactory.GetTypeHandler(propertyType);
+ }
+ _resultMap.AddResultPropery(property);
+ }
+
+// // Fix for IBATISNET-73 (JIRA-73) from Ron Grabowski
+// if (property.PropertyName != null && property.PropertyName.Length > 0)
+// {
+// // Set TypeHandler
+// Type propertyType = reflectionInfo.GetSetterType(property.PropertyName);
+// property.TypeHandler = typeHandlerFactory.GetTypeHandler( propertyType );
+// }
+// else
+// {
+// if (_logger.IsDebugEnabled)
+// {
+// _logger.Debug("The column [" + columnName + "] could not be auto mapped to a property on [" + resultObject.ToString() + "]");
+// }
+// }
}
}
catch (Exception e)