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