日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

实战SSM_O2O商铺_39【前端展示】首页轮播图和一级商铺Dao+Service+Controller层的实现

發布時間:2025/3/21 HTML 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 实战SSM_O2O商铺_39【前端展示】首页轮播图和一级商铺Dao+Service+Controller层的实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 概述
  • HeadLine Dao層
    • 接口
    • 映射文件
    • 單元測試
  • HeadLine Service層
    • 接口
    • 實現類
    • 單元測試
  • ShopCategory Dao層完善
    • 映射文件完善
    • 單元測試
  • Controller層
    • MainPageController
    • 測試
  • Github地址

概述

接下來我們來完成前端展示模塊部分的功能,極其丑陋的頁面原型如下

可以分析得出,主頁中輪播圖需要從后臺加載數據,同樣的一級類別(即parent_id = null )的商鋪信息也需要從后臺加載數據


HeadLine Dao層

接口

package com.artisan.o2o.dao;import java.util.List;import org.apache.ibatis.annotations.Param;import com.artisan.o2o.entity.HeadLine;public interface HeadLineDao {/*** * * @Title: selectHeadLineList* * @Description: 根據enable_status查詢符合條件的頭條信息* * @param headLineConditon* @return* * @return: List<HeadLine>*/List<HeadLine> selectHeadLineList(@Param("headLineConditon") HeadLine headLineConditon); }

映射文件

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.artisan.o2o.dao.HeadLineDao"><select id="selectHeadLineList" resultType="HeadLine">SELECTline_id,line_name,line_link,line_img,priority,enable_status,create_time,last_edit_timeFROMtb_head_line<where><if test="headLineConditon.enableStatus != null">and enable_status = #{headLineConditon.enableStatus}</if></where>ORDER BY priority DESC </select> </mapper>

單元測試

模擬數據:

package com.artisan.o2o.dao;import java.util.List;import org.junit.Assert; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired;import com.artisan.o2o.BaseTest; import com.artisan.o2o.entity.HeadLine;public class HeadLineDaoTest extends BaseTest {@Autowiredprivate HeadLineDao headLineDao;@Testpublic void testSelectHeadLineList() {HeadLine headLineConditon = new HeadLine();// 狀態 0 不可用 1 可用headLineConditon.setEnableStatus(0);// 查詢不可用的頭條信息List<HeadLine> headLineList = headLineDao.selectHeadLineList(headLineConditon);Assert.assertEquals(2, headLineList.size());for (HeadLine headLine : headLineList) {System.out.println(headLine);}// 查詢可用的頭條信息headLineConditon.setEnableStatus(1);headLineList = headLineDao.selectHeadLineList(headLineConditon);Assert.assertEquals(3, headLineList.size());for (HeadLine headLine : headLineList) {System.out.println(headLine);}// 查詢全部狀態的頭條信息headLineList = headLineDao.selectHeadLineList(new HeadLine());Assert.assertEquals(5, headLineList.size());for (HeadLine headLine : headLineList) {System.out.println(headLine);}} }

單元測試日志:

JDBC Connection [com.mchange.v2.c3p0.impl.NewProxyConnection@7e6ef134] will not be managed by Spring ==> Preparing: SELECT line_id, line_name, line_link, line_img, priority, enable_status, create_time, last_edit_time FROM tb_head_line WHERE enable_status = ? ORDER BY priority DESC ==> Parameters: 0(Integer) <== Columns: line_id, line_name, line_link, line_img, priority, enable_status, create_time, last_edit_time <== Row: 4, test4, aa, bb, 96, 0, null, null <== Row: 5, test5, cc, dd, 95, 0, null, null <== Total: 2 Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@4716be8b] HeadLine [lineId=4, lineName=test4, lineLink=aa, lineImg=bb, priority=96, enableStatus=0, createTime=null, lastEditTime=null] HeadLine [lineId=5, lineName=test5, lineLink=cc, lineImg=dd, priority=95, enableStatus=0, createTime=null, lastEditTime=null] Creating a new SqlSession SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@21a21c64] was not registered for synchronization because synchronization is not active JDBC Connection [com.mchange.v2.c3p0.impl.NewProxyConnection@42bc14c1] will not be managed by Spring ==> Preparing: SELECT line_id, line_name, line_link, line_img, priority, enable_status, create_time, last_edit_time FROM tb_head_line WHERE enable_status = ? ORDER BY priority DESC ==> Parameters: 1(Integer) <== Columns: line_id, line_name, line_link, line_img, priority, enable_status, create_time, last_edit_time <== Row: 1, test1, xxx, yyy, 99, 1, null, null <== Row: 2, test2, x, y, 98, 1, null, null <== Row: 3, test3, xx, yy, 97, 1, null, null <== Total: 3 Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@21a21c64] HeadLine [lineId=1, lineName=test1, lineLink=xxx, lineImg=yyy, priority=99, enableStatus=1, createTime=null, lastEditTime=null] HeadLine [lineId=2, lineName=test2, lineLink=x, lineImg=y, priority=98, enableStatus=1, createTime=null, lastEditTime=null] HeadLine [lineId=3, lineName=test3, lineLink=xx, lineImg=yy, priority=97, enableStatus=1, createTime=null, lastEditTime=null] Creating a new SqlSession SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@74f5ce22] was not registered for synchronization because synchronization is not active JDBC Connection [com.mchange.v2.c3p0.impl.NewProxyConnection@16fdec90] will not be managed by Spring ==> Preparing: SELECT line_id, line_name, line_link, line_img, priority, enable_status, create_time, last_edit_time FROM tb_head_line ORDER BY priority DESC ==> Parameters: <== Columns: line_id, line_name, line_link, line_img, priority, enable_status, create_time, last_edit_time <== Row: 1, test1, xxx, yyy, 99, 1, null, null <== Row: 2, test2, x, y, 98, 1, null, null <== Row: 3, test3, xx, yy, 97, 1, null, null <== Row: 4, test4, aa, bb, 96, 0, null, null <== Row: 5, test5, cc, dd, 95, 0, null, null <== Total: 5 Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@74f5ce22] HeadLine [lineId=1, lineName=test1, lineLink=xxx, lineImg=yyy, priority=99, enableStatus=1, createTime=null, lastEditTime=null] HeadLine [lineId=2, lineName=test2, lineLink=x, lineImg=y, priority=98, enableStatus=1, createTime=null, lastEditTime=null] HeadLine [lineId=3, lineName=test3, lineLink=xx, lineImg=yy, priority=97, enableStatus=1, createTime=null, lastEditTime=null] HeadLine [lineId=4, lineName=test4, lineLink=aa, lineImg=bb, priority=96, enableStatus=0, createTime=null, lastEditTime=null] HeadLine [lineId=5, lineName=test5, lineLink=cc, lineImg=dd, priority=95, enableStatus=0, createTime=null, lastEditTime=null]

HeadLine Service層

接口

package com.artisan.o2o.service;import java.util.List;import com.artisan.o2o.entity.HeadLine;public interface HeadLineService {/*** * * @Title: queryHeadLineList* * @Description: 查詢headLine* * @param headLineConditon* * @return: List<HeadLine>*/List<HeadLine> queryHeadLineList(HeadLine headLineConditon); }

實現類

package com.artisan.o2o.service.impl;import java.util.List;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;import com.artisan.o2o.dao.HeadLineDao; import com.artisan.o2o.entity.HeadLine; import com.artisan.o2o.service.HeadLineService;@Service public class HeadLineServiceImpl implements HeadLineService {@AutowiredHeadLineDao headLineDao;@Overridepublic List<HeadLine> queryHeadLineList(HeadLine headLineConditon) {return headLineDao.selectHeadLineList(headLineConditon);}}

單元測試

package com.artisan.o2o.service;import java.util.List;import org.junit.Assert; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired;import com.artisan.o2o.BaseTest; import com.artisan.o2o.entity.HeadLine;public class HeadLineServiceTest extends BaseTest {@Autowiredprivate HeadLineService headLineService;@Testpublic void testQueryHeadLineList() {HeadLine headLineConditon = new HeadLine();// 狀態 0 不可用 1 可用headLineConditon.setEnableStatus(0);// 查詢不可用的頭條信息List<HeadLine> headLineList = headLineService.queryHeadLineList(headLineConditon);Assert.assertEquals(2, headLineList.size());for (HeadLine headLine : headLineList) {System.out.println(headLine);}// 查詢可用的頭條信息headLineConditon.setEnableStatus(1);headLineList = headLineService.queryHeadLineList(headLineConditon);Assert.assertEquals(3, headLineList.size());for (HeadLine headLine : headLineList) {System.out.println(headLine);}} }

檢查是否符合預期,單元測試正常


ShopCategory Dao層完善

因為按照設計,首頁展示的商品類別是一級商品類別,即parent_id為null的商鋪類別信息。 因此需要擴招之前寫好的Dao層的SQL映射文件。

映射文件完善

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.artisan.o2o.dao.ShopCategoryDao"><select id="queryShopCategoryList" resultType="com.artisan.o2o.entity.ShopCategory">SELECTshop_category_id ,shop_category_name,shop_category_desc,shop_category_img,priority,create_time,last_edit_time,parent_idFROMtb_shop_category<where><!-- 首頁查詢一級類別的商鋪信息 --><if test="shopCategoryCondition == null">and parent_id is null</if><!-- 控制層getshopinitinfo的方法 shopCategoryService.getShopCategoryList(new ShopCategory());只能選擇二級商鋪類別,不能掛載一級商鋪類別大類目錄下--><if test="shopCategoryCondition != null">and parent_id is not null</if><!-- 如果傳遞了父類的id,則查詢對應父類下的目錄 --><if test="shopCategoryCondition != null and shopCategoryCondition.parent != null">and parent_id = #{shopCategoryCondition.parent.shopCategoryId}</if></where> ORDER BY priority DESC </select> </mapper>

單元測試

package com.artisan.o2o.dao;import java.util.List;import org.junit.Assert; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired;import com.artisan.o2o.BaseTest; import com.artisan.o2o.entity.ShopCategory;public class ShopCategoryDaoTest extends BaseTest {@AutowiredShopCategoryDao shopCategoryDao;@Testpublic void testQueryShopCategoryList() {// shopCategoryCondition 不為null的情況,查詢parent_id is not null 的數據ShopCategory shopCategory = new ShopCategory();List<ShopCategory> categoryList = shopCategoryDao.queryShopCategoryList(shopCategory);Assert.assertEquals(2, categoryList.size());for (ShopCategory shopCategory2 : categoryList) {System.out.println(shopCategory2);}// shopCategoryCondition.parent 不為null的情況// 查詢parent=1的店鋪目錄ShopCategory child = new ShopCategory();ShopCategory parent = new ShopCategory();parent.setShopCategoryId(1L);child.setParent(parent);categoryList = shopCategoryDao.queryShopCategoryList(child);Assert.assertEquals(2, categoryList.size());for (ShopCategory shopCategory2 : categoryList) {System.out.println(shopCategory2);}// 查詢 parent is null 的情況categoryList = shopCategoryDao.queryShopCategoryList(null);Assert.assertEquals(1, categoryList.size());System.out.println(categoryList.get(0));}}

檢查是否符合預期,單元測試正常


Controller層

MainPageController

package com.artisan.o2o.web.frontend;import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody;import com.artisan.o2o.entity.HeadLine; import com.artisan.o2o.entity.ShopCategory; import com.artisan.o2o.enums.HeadLineStateEnum; import com.artisan.o2o.enums.ShopCategoryStateEnum; import com.artisan.o2o.service.HeadLineService; import com.artisan.o2o.service.ShopCategoryService;@Controller @RequestMapping("/frontend") public class MainPageController {@Autowiredprivate HeadLineService headLineService;@Autowiredprivate ShopCategoryService shopCategoryService;@RequestMapping(value = "/listmainpage", method = RequestMethod.GET)@ResponseBodypublic Map<String, Object> listMainPage() {Map<String, Object> modelMap = new HashMap<String, Object>();List<ShopCategory> shopCategoryList = new ArrayList<ShopCategory>();List<HeadLine> headLineList = new ArrayList<HeadLine>();try {// 查詢狀態為1的可見的headLine信息HeadLine headLineConditon = new HeadLine();headLineConditon.setEnableStatus(1);headLineList = headLineService.queryHeadLineList(headLineConditon);modelMap.put("headLineList", headLineList);} catch (Exception e) {e.printStackTrace();modelMap.put("errMsg", HeadLineStateEnum.INNER_ERROR.getStateInfo());}try{// 查詢parentId為null的一級類別shopCategoryList = shopCategoryService.getShopCategoryList(null);modelMap.put("shopCategoryList", shopCategoryList);} catch (Exception e) {e.printStackTrace();modelMap.put("success", false);modelMap.put("errMsg", ShopCategoryStateEnum.INNER_ERRO.getStateInfo());}modelMap.put("success", true);return modelMap;} }

測試

啟動tomcat,訪問 http://localhost:8080/o2o/frontend/listmainpage

得到JSON字符串如下

{"shopCategoryList": [{"shopCategoryId": 1,"shopCategoryName": "咖啡奶茶","shopCategoryDesc": "咖啡奶茶大類","shopCategoryImg": "/xxxx/xxxx","priority": 0,"createTime": 1526580836000,"lastEditTime": 1526580838000,"parent": null}],"success": true,"headLineList": [{"lineId": 1,"lineName": "test1","lineLink": "xxx","lineImg": "yyy","priority": 99,"enableStatus": 1,"createTime": null,"lastEditTime": null},{"lineId": 2,"lineName": "test2","lineLink": "x","lineImg": "y","priority": 98,"enableStatus": 1,"createTime": null,"lastEditTime": null},{"lineId": 3,"lineName": "test3","lineLink": "xx","lineImg": "yy","priority": 97,"enableStatus": 1,"createTime": null,"lastEditTime": null}] }

符合預期。后端完成,接下來我們來試下View層的邏輯。


Github地址

代碼地址: https://github.com/yangshangwei/o2o

總結

以上是生活随笔為你收集整理的实战SSM_O2O商铺_39【前端展示】首页轮播图和一级商铺Dao+Service+Controller层的实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。