ibatis关联查询的问题
<resultMap class="com.shenzhen.ibatis.litlov.model.TUser" id="abatorgenerated_TUserResult"><!--
WARNING - This element is automatically generated by Abator for iBATIS, do not modify.
This element was generated on Thu Aug 15 00:03:30 CST 2013.
-->
<result column="user_id" jdbcType="INTEGER" property="userId" />
<result column="user_name" jdbcType="VARCHAR" property="userName" />
<result column="user_email" jdbcType="VARCHAR" property="userEmail" />
<result column="user_mobile" jdbcType="VARCHAR" property="userMobile" />
<result column="create_date" jdbcType="TIMESTAMP" property="createDate" />
<result column="user_id" property="orders" select="t_user.getOrderByUserId"/>
</resultMap>
<select id="getOrderByUserId" parameterClass="int" resultClass="TOrder">
<![CDATA[
select order_id, order_status, order_amounts, order_date, user_id from t_order where user_id = #value#
]]>
</select>
TUser实体类:
private List<TOrder> orders;
/**
* This method was generated by Abator for iBATIS. This method returns the value of the database column t_user.user_id
* @return the value of t_user.user_id
* @abatorgenerated Thu Aug 15 00:03:30 CST 2013
*/
public Integer getUserId() {
return userId;
}
......
public List<TOrder> getOrders()
{
return orders;
}
public void setOrders(List<TOrder> orders)
{
this.orders = orders;
}
测试类:
......
TUser user = userDao.selectByPrimaryKey(115824735);
List<TOrder> orders = user.getOrders();
log.info("orders.size = " + orders.size());
for (Iterator<TOrder> iterator = orders.iterator(); iterator.hasNext(); )
{
TOrder order = iterator.next();
int orderId = order.getOrderId();
int orderStatus = order.getOrderStatus();
double orderAmount = order.getOrderAmounts().doubleValue();
Date orderDate = order.getOrderDate();
int userId = order.getUserId();
log.info("\nOrders:\n" + "orderId:" + orderId + "\norderStatus:" + orderStatus + "\norderAmount:" + orderAmount + "\norderDate:" + orderDate + "\nuserId:" + userId);
}
打印出orders.size = 2
数据库数据信息为:
mysql> select order_id, order_status, order_amounts, order_date, user_id from t_
order where user_id = 115824735
-> ;
+-----------+--------------+---------------+---------------------+-----------+
| order_id | order_status | order_amounts | order_date | user_id |
+-----------+--------------+---------------+---------------------+-----------+
| 139824535 | 3 | 88888.88 | 2013-08-15 00:05:58 | 115824735 |
| 139824537 | 1 | 66666666.66 | 2013-08-15 13:46:13 | 115824735 |
+-----------+--------------+---------------+---------------------+-----------+
2 rows in set (0.00 sec)
LOG4J的日志信息为:
2013-08-15 16:26:50 281 DEBUG PreparedStatement:22 - {pstm-100001} PreparedStatement: select user_id, user_name, user_email, user_mobile, create_date from t_user where user_id = ?
2013-08-15 16:26:50 281 DEBUG PreparedStatement:22 - {pstm-100001} Parameters: [115824735]
2013-08-15 16:26:50 281 DEBUG PreparedStatement:22 - {pstm-100001} Types: [java.lang.Integer]
2013-08-15 16:26:50 281 DEBUG ResultSet:22 - {rset-100002} ResultSet
2013-08-15 16:26:50 296 DEBUG ResultSet:22 - {rset-100002} Header: [user_id, user_name, user_email, user_mobile, create_date, user_id]
2013-08-15 16:26:50 296 DEBUG ResultSet:22 - {rset-100002} Result: [115824735, 奥特曼, aoteman@163.com, 13600000000, 2013-08-15 00:05:58.0, 115824735]
2013-08-15 16:26:50 312 DEBUG SimpleDataSource:22 - Returned connection 7804298 to pool.
2013-08-15 16:26:50 312 DEBUG SimpleDataSource:22 - Checked out connection 7804298 from pool.
2013-08-15 16:26:50 312 DEBUG Connection:22 - {conn-100003} Connection
2013-08-15 16:26:50 312 DEBUG PreparedStatement:22 - {pstm-100004} PreparedStatement: select order_id, order_status, order_amounts, order_date, user_id from t_order where user_id = ?
2013-08-15 16:26:50 312 DEBUG PreparedStatement:22 - {pstm-100004} Parameters: [115824735]
2013-08-15 16:26:50 312 DEBUG PreparedStatement:22 - {pstm-100004} Types: [java.lang.Integer]
2013-08-15 16:26:50 312 DEBUG ResultSet:22 - {rset-100005} ResultSet
2013-08-15 16:26:50 312 DEBUG SimpleDataSource:22 - Returned connection 7804298 to pool.
2013-08-15 16:26:50 312 INFO Runner:178 - orders.size = 2
Exception in thread "main" java.lang.NullPointerException
at com.shenzhen.ibatis.litlov.Runner.execute(Runner.java:182)
at com.shenzhen.ibatis.litlov.Runner.main(Runner.java:44)
求解。。 ibatis
补充:Java , Java EE