因為在訂單類(Order)中涉及產品類(Product)的產品名稱(ProductName)和產品價格(ProductPrice),所以需要使用聯合查詢。
1.項目結構:
2.重新定義的實體類代碼OrderProduct:
public class OrderProduct extends Orders { // 此處繼承Orders類並重新定義Product類 private Product product; public Product getProduct() { return product; } public void setProduct(Product product) { this.product = product; } @Override public String toString() { return "OrderProduct{" + "product=" + product + '}'; } }
3.OrderService代碼
List<OrderProduct> findAll(int page, int size); //int page,int size為分頁,如不用可以刪除
4.OrderServiceImpl代碼
@Service public class OrdersServiceImpl implements OrdersService { @Autowired private OrdersMapper ordersMapper; @Override public List<OrderProduct> findAll(int page, int size) { //此處為開啟分頁插件,page size為分頁參數,如不用可以刪除 PageHelper.startPage(page,size); return this.ordersMapper.findAll(); } }
5.OrderMapper代碼
public interface OrdersMapper { int deleteByPrimaryKey(String id); int insert(Orders record); //查詢所有 List<OrderProduct> findAll(); Orders selectByPrimaryKey(String id); int updateByPrimaryKey(Orders record); }
6.OrderMapper.xml
<resultMap id="OrderProduct" type="com.hhxy.plx.domain.OrderProduct"> <id column="id" property="id" jdbcType="VARCHAR" /> <result column="ordernum" property="ordernum" jdbcType="VARCHAR" /> <result column="ordertime" property="ordertime" jdbcType="TIMESTAMP" /> <result column="peoplecount" property="peoplecount" jdbcType="INTEGER" /> <result column="orderdesc" property="orderdesc" jdbcType="VARCHAR" /> <result column="paytype" property="paytype" jdbcType="INTEGER" /> <result column="orderstatus" property="orderstatus" jdbcType="INTEGER" /> <result column="productid" property="productid" jdbcType="VARCHAR" /> <result column="memberid" property="memberid" jdbcType="VARCHAR" /> <association property="product" javaType="com.hhxy.plx.domain.Product"> <id column="id" property="id" jdbcType="VARCHAR" /> <result column="productName" property="productName" jdbcType="VARCHAR" /> <result column="productPrice" property="productPrice" jdbcType="DECIMAL" /> </association> </resultMap>
<select id="findAll" resultMap="OrderProduct" >
select
a.* ,
b.productName,
b.productPrice
# 這里為查詢a的所有,b中的名字和價格
from
orders as a
# 定義別名order為a
left outer join
product as b
# 定義別名order為a
on
a.productid=b.id
# a中的productid為b中的id
</select>
7.OrderController代碼
@Autowired private OrdersService ordersService; @RequestMapping("/findAll.do") public ModelAndView findAll(@RequestParam(name = "page",required = true,defaultValue = "1")int page, @RequestParam(name = "size",required = true,defaultValue = "4")int size,
Model model)throws Exception{ ModelAndView mv = new ModelAndView(); List<OrderProduct> orderProductsList=ordersService.findAll(page, size); PageInfo pageinfo =new PageInfo(orderProductsList); model.addAttribute("pageinfo",pageinfo); model.addAttribute("orderProductsList",orderProductsList); mv.setViewName("orders-list"); return mv; }
8.jsp頁面
<tbody> <c:forEach items="${pageinfo.list}" var="orders"> <tr> <td><input name="ids" type="checkbox"></td> <td>${orders.id }</td> <td>${orders.ordernum }</td> <td>${orders.product.productName }</td> <td>${orders.product.productPrice }</td> <td>${orders.ordertimestr }</td> <td class="text-center">${orders.orderstatusstr }</td> <td class="text-center"> <button type="button" class="btn bg-olive btn-xs">訂單</button> <button type="button" class="btn bg-olive btn-xs" onclick="location.href='${pageContext.request.contextPath}/orders/findById.do?id=${orders.id}'">詳情</button> <button type="button" class="btn bg-olive btn-xs">編輯</button> </td> </tr> </c:forEach> </tbody>
9.結束。