SSM多表查詢


因為在訂單類(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.結束。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM