当前位置:网站首页>秒杀系统3-商品列表和商品详情
秒杀系统3-商品列表和商品详情
2022-07-03 15:18:00 【ジ你是我永远のbugグ】
1、首先在数据库添加数据
INSERT INTO `t_goods` VALUES (1, 'Iphone 12 64G', 'Iphone 12 64G', '/img/iphone12.png', 'Iphone 12 64G', 5299.00, 100);
INSERT INTO `t_goods` VALUES (2, 'Iphone12Pro128G', 'Iphone12Pro128G', '/img/iphone12pro.png', 'Iphone12Pro128G', 6299.00, 100);
INSERT INTO `t_seckill_goods` VALUES (1, 1, 4299.00, 10, '2022-06-15 00:00:00', '2022-07-15 00:00:00');
INSERT INTO `t_seckill_goods` VALUES (2, 2, 5299.00, 10, '2022-06-15 00:00:00', '2022-07-15 00:00:00');
2、根据 Mybatis-plus 逆向工程将数据库表生成相应文件
3、在接口中获取 商品列表
package com.example.seckill.controller;
import com.example.seckill.common.RespBean;
import com.example.seckill.controller.parm.LoginRequestParam;
import com.example.seckill.pojo.User;
import com.example.seckill.service.IGoodsService;
import com.example.seckill.service.IUserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.CookieValue;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
@RequestMapping("/goods")
@Controller
@Slf4j
public class GoodsController {
@Autowired
IGoodsService goodsService;
@Autowired
IUserService userService;
/** * 跳转商品页 * @param * @param model * @param * @return */
@RequestMapping("/toList")
public String toList(Model model,User user){
// 将用户信息 传到前端页面
model.addAttribute("user",user);
model.addAttribute("goodsList",goodsService.findGoodsList());
return "goodsList";
}
}
package com.example.seckill.service.impl;
import com.example.seckill.controller.outPutParm.GoodsListOutPut;
import com.example.seckill.pojo.Goods;
import com.example.seckill.mapper.GoodsMapper;
import com.example.seckill.service.IGoodsService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/** * <p> * 商品表 服务实现类 * </p> * * @author jobob * @since 2022-06-14 */
@Service
public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements IGoodsService {
@Autowired(required = false)
GoodsMapper goodsMapper;
/** * 获取商品列表 * @return */
@Override
public List<GoodsListOutPut> findGoodsList() {
List<GoodsListOutPut> goodsList= goodsMapper.findGoodsList();
return goodsList;
}
}
<select id="findGoodsList" resultType="com.example.seckill.controller.outPutParm.GoodsListOutPut">
SELECT g.id,
g.goods_name,
g.goods_title,
g.goods_img,
g.goods_price,
g.goods_stock,
sg.seckill_price,
sg.stock_count,
sg.start_date,
sg.end_date
FROM t_goods g
LEFT JOIN t_seckill_goods sg on g.id = sg.goods_id
</select>
以及前端商品列表页面
<!DOCTYPE html>
<html lang="en"
xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>商品列表</title>
<!-- jquery -->
<script type="text/javascript" th:src="@{/js/jquery.min.js}"></script>
<!-- bootstrap -->
<link rel="stylesheet" type="text/css" th:href="@{/bootstrap/css/bootstrap.min.css}"/>
<script type="text/javascript" th:src="@{/bootstrap/js/bootstrap.min.js}"></script>
<!-- layer -->
<script type="text/javascript" th:src="@{/layer/layer.js}"></script>
<!-- common.js -->
<script type="text/javascript" th:src="@{/js/common.js}"></script>
</head>
<body>
<div class="panel panel-default">
<div class="panel-heading">秒杀商品列表</div>
<table class="table" id="goodslist">
<tr>
<td>商品名称</td>
<td>商品图片</td>
<td>商品原价</td>
<td>秒杀价</td>
<td>库存数量</td>
<td>详情</td>
</tr>
<tr th:each="goods,goodsStat : ${goodsList}">
<td th:text="${goods.goodsName}"></td>
<td><img th:src="@{${goods.goodsImg}}" width="100" height="100"/></td>
<td th:text="${goods.goodsPrice}"></td>
<td th:text="${goods.seckillPrice}"></td>
<td th:text="${goods.stockCount}"></td>
<td><a th:href="'/goodsDetail.html?goodsId='+${goods.id}">详情</a></td>
</tr>
</table>
</div>
</body>
</html>
运行:
边栏推荐
- XWiki Installation Tips
- Using notepad++ to build an arbitrary language development environment
- Finally, someone explained the financial risk management clearly
- Detailed comments on MapReduce instance code on the official website
- Redis cache penetration, cache breakdown, cache avalanche solution
- 秒杀系统2-Redis解决分布式Session问题
- What is embedding (encoding an object into a low dimensional dense vector), NN in pytorch Principle and application of embedding
- Basic SQL tutorial
- Global and Chinese markets for ionization equipment 2022-2028: Research Report on technology, participants, trends, market size and share
- Global and Chinese market of trimethylamine 2022-2028: Research Report on technology, participants, trends, market size and share
猜你喜欢
如何使用 @NotNull等注解校验 并全局异常处理
Jvm-03-runtime data area PC, stack, local method stack
Chapter 04_ Logical architecture
Visual upper system design and development (Halcon WinForm) -1 Process node design
Concurrency-02-visibility, atomicity, orderliness, volatile, CAS, atomic class, unsafe
Visual host system design and development (Halcon WinForm)
What is embedding (encoding an object into a low dimensional dense vector), NN in pytorch Principle and application of embedding
Tensorflow realizes verification code recognition (I)
高并发下之redis锁优化实战
Idea does not specify an output path for the module
随机推荐
redis单线程问题强制梳理门外汉扫盲
Série yolov5 (i) - - netron, un outil de visualisation de réseau
[set theory] inclusion exclusion principle (complex example)
Jvm-09 byte code introduction
[pytorch learning notes] datasets and dataloaders
socket. IO build distributed web push server
第04章_逻辑架构
Jvm-03-runtime data area PC, stack, local method stack
Kubernetes帶你從頭到尾捋一遍
Jvm-04-runtime data area heap, method area
Apache ant extension tutorial
Halcon与Winform学习第二节
Redis cache penetration, cache breakdown, cache avalanche solution
【云原生训练营】模块七 Kubernetes 控制平面组件:调度器与控制器
Global and Chinese market of air cargo logistics 2022-2028: Research Report on technology, participants, trends, market size and share
Global and Chinese market of optical fiber connectors 2022-2028: Research Report on technology, participants, trends, market size and share
What is one hot encoding? In pytoch, there are two ways to turn label into one hot coding
Visual upper system design and development (Halcon WinForm) -4 Communication management
Dataframe returns the whole row according to the value
Tensorflow realizes verification code recognition (I)