電商模塊開發-第七天

第一個功能:實現商品的預覽功能。今天換一種方式,以前都是從持久層往前端寫,如今從前端的請求開始日後寫,可能易於理解。前端

  • 從前端傳送過來的請求
<a href="<c:url value="/list?method=preArticle&id=${a.id }"/>"> //附帶了商品的id
  •  servlet的處理
public void preArticle() throws ServletException, IOException {
        String id=request.getParameter("id");
        Article article=service1.getById(id);
        article.setDiscount(8.8);
        request.setAttribute("article",article);
        request.getRequestDispatcher("/WEB-INF/jsp/preArticle.jsp").forward(request,response);
    }
  • 業務層接口的實現類的處理
public Article getById(String id) {
        return articleDao.selectById(id);
    }
  • 持久層
DAO層的接口
public Article selectById(String id);

DAO層的實現
<select id="selectById" resultMap="resultMap">
    select * from ec_article where id=#{id}
</select>

在preArticle.jsp中,將article中的內容作展現就能夠了。java

第二個功能:sql

修改商品信息app

  • 接受前端傳過來的請求
<a class="label label-success" href="<c:url value="/list?method=showUpdate&id=${a.id }&typeCode=${typeCode}&secondType=${secondType}&title=${title}"/>">修改</a>
  •  須要一個修改的頁面,由showUpdate()方法完成該頁面上商品的信息展現。在要修改的頁面上有一項是要顯示該商品所屬的類別,而在商品表中有的只是typecode,靠它與商品類表的code關聯,因此如今要作的就是根據他們的關聯的關係,由商品的typecode來查詢出商品所屬類別。
  • 但是咱們有不想查詢出來一堆沒有意義的商品類型的code(是用00010001表示),咱們但願看到的是商品類型的name。
  • 商品表與商品類型的表是一對多的關係。咱們在 Class Article 中添加屬性ArticleType(商品類型表所對應的實體類)
  • 再次重申:咱們但願經過id查詢商品的同時,可以將商品的所有類型名稱查出來,爲了完成這個操做,須要在DAO層的實現類中添加內容
<mapper namespace="per.lc.sms.dao.ArticleDao">
    <resultMap id="resultMap" type="Article">
        <result property="putAwayDate" column="PUTAWAY_DATE"/>
        <result property="dateTime" column="CREATE_DATE"/>
        <association property="articleType" javaType="ArticleType" column="TYPE_CODE" select="per.lc.sms.dao.ArticleTypeDao.selectByTypeCode"/> 
</resultMap>

//per.lc.sms.dao.ArticleTypeDao.selectByTypeCode 表示在per.lc.sms.dao包下ArticleTypeDao類中的一個selectByTypeCode()方法,它會由TYPE_CODE查詢到對應的ArticleType類,而後映射到articleType
  • servlet處理
public void showUpdate() throws ServletException, IOException {
        String id=request.getParameter("id");
        Article article=service1.getById(id);
        request.setAttribute("article",article);
        request.getRequestDispatcher("/WEB-INF/jsp/updateArticle.jsp").forward(request,response);
    }

 

  • updateArticle.jsp,下面這條語句就將該商品所屬的類型的name顯示出來了。
<input type=text value="${article.articleType.name}" class="form-control" readonly="readonly" size="50">
  •  將請求發送到servlet下的updateArticle()
<form name="articleform" class="form-horizontal" action="${pageContext.request.contextPath}/list?method=updateArticle"
  •  updateArticle()
public void updateArticle() throws ServletException, IOException {
    //接受頁面傳過來的數據 String title
=request.getParameter("titleStr"); String supplier=request.getParameter("supplier"); String locality=request.getParameter("locality"); String price=request.getParameter("price"); String storage=request.getParameter("storage"); String description=request.getParameter("description"); String id=request.getParameter("id"); String picUrl=request.getParameter("picUrl"); //修改以前的圖片名。 //若是用戶沒有上傳圖片,使用修改以前的圖片名 try{ //接收上傳圖片 Part part=request.getPart("image"); //若image爲空,異常將會被捕獲,後面的代碼也可以執行。 //獲取項目路徑中 String sysPath=request.getSession().getServletContext().getRealPath("/resources/images/article"); //爲文件命名 String file=UUID.randomUUID().toString(); //須要拿到文件的格式 String contentDisposition = part.getHeader("content-disposition");
       //拿到圖片的後綴 String suffix
=contentDisposition.substring(contentDisposition.lastIndexOf("."),contentDisposition.length()-1);
       //拼接 String fileName
=file+suffix; //將其放在目錄下 part.write(sysPath+"/"+fileName); picUrl=fileName; }catch (Exception e){ e.printStackTrace(); } Article article=new Article(); article.setTitle(title); article.setSupplier(supplier); article.setPrice(Double.parseDouble(price)); article.setLocality(locality); article.setStorage(Integer.parseInt(storage)); article.setDescription(description); article.setId(Integer.parseInt(id)); article.setImage(picUrl); service1.update(article); //執行修改的方法 showUpdate(); //回調展現頁面 }
  •  持久層動態sql的實現
 <update id="update" >
        update ec_article set
        <if test="title!=null">title=#{title},</if>
        <if test="supplier!=null">supplier=#{supplier},</if>
        <if test="price!=null">price=#{price},</if>
        <if test="image!=null">image=#{image},</if>
        <if test="locality!=null">locality=#{locality},</if>
        <if test="storage!=null">storage=#{storage},</if>
        <if test="description!=null">description=#{description}</if>
        where id=#{id}
    </update>

 業務層的實現類dom

public void update(Article article) {
        articleDao.update(article);
    }
相關文章
相關標籤/搜索