当前位置:网站首页>秒杀系统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>
运行:
边栏推荐
- Atlas atlas torque gun USB communication tutorial based on mtcom
- Functional modules and application scenarios covered by the productization of user portraits
- Global and Chinese market of postal automation systems 2022-2028: Research Report on technology, participants, trends, market size and share
- 详解指针进阶1
- Yolov5 series (I) -- network visualization tool netron
- Kubernetes advanced training camp pod Foundation
- Finally, someone explained the financial risk management clearly
- [combinatorics] permutation and combination (set permutation, step-by-step processing example)
- Global and Chinese markets for ionization equipment 2022-2028: Research Report on technology, participants, trends, market size and share
- [probably the most complete in Chinese] pushgateway entry notes
猜你喜欢

Halcon与Winform学习第二节

Characteristics of MySQL InnoDB storage engine -- Analysis of row lock

Final review points of human-computer interaction

什么是one-hot encoding?Pytorch中,将label变成one hot编码的两种方式

redis缓存穿透,缓存击穿,缓存雪崩解决方案

Basic SQL tutorial

Baidu AI Cloud helps Shizuishan upgrade the smart health care model of "Internet + elderly care services"

Concurrency-02-visibility, atomicity, orderliness, volatile, CAS, atomic class, unsafe

Tensorflow realizes verification code recognition (I)

Functional modules and application scenarios covered by the productization of user portraits
随机推荐
Unity hierarchical bounding box AABB tree
Functional modules and application scenarios covered by the productization of user portraits
【云原生训练营】模块七 Kubernetes 控制平面组件:调度器与控制器
Global and Chinese market of marketing automation 2022-2028: Research Report on technology, participants, trends, market size and share
需要知道的字符串函数
el-switch 赋值后状态不变化
Nppexec get process return code
Concurrency-01-create thread, sleep, yield, wait, join, interrupt, thread state, synchronized, park, reentrantlock
[transformer] Introduction - the original author of Harvard NLP presented the annotated transformer in the form of line by line implementation in early 2018
高并发下之redis锁优化实战
Introduction to redis master-slave, sentinel and cluster mode
使用Tengine解决负载均衡的Session问题
Global and Chinese market of solder bars 2022-2028: Research Report on technology, participants, trends, market size and share
What is machine reading comprehension? What are the applications? Finally someone made it clear
Reentrantlock usage and source code analysis
[Yu Yue education] scientific computing and MATLAB language reference materials of Central South University
函数栈帧的创建和销毁
Popular understanding of linear regression (I)
Using Tengine to solve the session problem of load balancing
Tensorflow realizes verification code recognition (I)