package org.springframework.autobuilds.jpetstore.dao.ibatis; import java.util.List; import org.springframework.dao.DataAccessException; import org.springframework.orm.ibatis.support.SqlMapDaoSupport; import org.springframework.autobuilds.jpetstore.dao.OrderDao; import org.springframework.autobuilds.jpetstore.domain.LineItem; import org.springframework.autobuilds.jpetstore.domain.Order; public class SqlMapOrderDao extends SqlMapDaoSupport implements OrderDao { private SqlMapSequenceDao sequenceDao; public void setSequenceDao(SqlMapSequenceDao sequenceDao) { this.sequenceDao = sequenceDao; } public List getOrdersByUsername(String username) throws DataAccessException { return getSqlMapTemplate().executeQueryForList("getOrdersByUsername", username); } public Order getOrder(int orderId) throws DataAccessException { Object parameterObject = new Integer(orderId); Order order = (Order) getSqlMapTemplate().executeQueryForObject("getOrder", parameterObject); if (order != null) { order.setLineItems(getSqlMapTemplate().executeQueryForList("getLineItemsByOrderId", new Integer(order.getOrderId()))); } return order; } public void insertOrder(Order order) throws DataAccessException { order.setOrderId(this.sequenceDao.getNextId("ordernum")); getSqlMapTemplate().executeUpdate("insertOrder", order); getSqlMapTemplate().executeUpdate("insertOrderStatus", order); for (int i = 0; i < order.getLineItems().size(); i++) { LineItem lineItem = (LineItem) order.getLineItems().get(i); lineItem.setOrderId(order.getOrderId()); getSqlMapTemplate().executeUpdate("insertLineItem", lineItem); } } }