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)