porm文件
<? version=\"1.0\" encoding=\"UTF-8\"?>
<project ns=\"http://maven.apache.org/POM/4.0.0\" ns:xsi=\"http://www.w3.org/2001/ Schema-instance\"
xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">
<modelVersion>4.0.0</modelVersion>
<groupId>com.itlaoqi</groupId>
<artifactId>babytun</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>babytun</name>
<de ion>Demo project for Spring Boot</de ion>
<parent>
<groupId>org.spring work.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.spring work.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
<dependency>
<groupId>org.spring work.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.spring work.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.spring work.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
main文件
package com.itlaoqi.babytun;
import org.mybatis.spring.annotation.MapperScan;
import org.spring work.boot.SpringApplication;
import org.spring work.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan(\"com.itlaoqi.babytun\") //mybatis在SpringBoot启动的时候自动扫描mybatis实现的接口
public class BabytunApplication {
public static void main(String[] args) {
SpringApplication.run(BabytunApplication.class, args);
}
}
controller文件
package com.itlaoqi.babytun.controller;
import com.itlaoqi.babytun.entity.Goods;
import com.itlaoqi.babytun.service.GoodsService;
import org.slf4j.LoggerFactory;
import org.spring work.stereotype.Controller;
import org.spring work.web.bind.annotation.GetMapping;
import org.spring work.web.servlet.ModelAndView;
import javax.annotation.Resource;
import org.slf4j.*;
@Controller
public class GoodsController {
Logger logger = LoggerFactory.getLogger(GoodsController.class);
@Resource
private GoodsService goodsService;
@GetMapping(\"/goods\") //http://localhost/goods?gid=xxx
public ModelAndView showGoods(Long gid){
logger.info(\"gid:\" + gid);
ModelAndView mav = new ModelAndView(\"/goods\");
Goods goods = goodsService.getGoods(gid);
mav.add (\"goods\", goods);
mav.add (\"covers\", goodsService.findCovers(gid));
mav.add (\"details\", goodsService.findDetails(gid));
mav.add (\"params\", goodsService.findParams(gid));
return mav;
}
}
service文件
package com.itlaoqi.babytun.service;
import com.itlaoqi.babytun.dao.GoodsCoverDAO;
import com.itlaoqi.babytun.dao.GoodsDAO;
import com.itlaoqi.babytun.dao.GoodsDetailDAO;
import com.itlaoqi.babytun.dao.GoodsParamDAO;
import com.itlaoqi.babytun.entity.Goods;
import com.itlaoqi.babytun.entity.GoodsCover;
import com.itlaoqi.babytun.entity.GoodsDetail;
import com.itlaoqi.babytun.entity.GoodsParam;
import org.spring work.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service
public class GoodsService {
@Resource
private GoodsDAO goodsDAO;
@Resource
private GoodsCoverDAO goodsCoverDAO;
@Resource
private GoodsDetailDAO goodsDetailDAO;
@Resource
private GoodsParamDAO goodsParamDAO;
//view -> controller -> service -> dao
public Goods getGoods(Long goodsId) {
return goodsDAO.findById(goodsId);
}
public List<GoodsCover> findCovers(Long goodsId){
return goodsCoverDAO.findByGoodsId(goodsId);
}
public List<GoodsDetail> findDetails(Long goodsId){
return goodsDetailDAO.findByGoodsId(goodsId);
}
public List<GoodsParam> findParams(Long goodsId){
List list = goodsParamDAO.findByGoodsId(goodsId);
return list;
}
}
Dao文件
package com.itlaoqi.babytun.dao;
import com.itlaoqi.babytun.entity.Goods;
public interface GoodsDAO {
public Goods findById(Long goodsId);
}
entity 文件
package com.itlaoqi.babytun.entity;
public class Goods {
private Long goodsId;
private String ;
private String sub ;
private Float originalCost;
private Float currentPrice;
private Float discount;
private Integer isFreeDelivery;
private Long categoryId;
public Long getGoodsId() {
return goodsId;
}
public void setGoodsId(Long goodsId) {
this.goodsId = goodsId;
}
public String get () {
return ;
}
public void set (String ) {
this. = ;
}
public String getSub () {
return sub ;
}
public void setSub (String sub ) {
this.sub = sub ;
}
public Float getOriginalCost() {
return originalCost;
}
public void setOriginalCost(Float originalCost) {
this.originalCost = originalCost;
}
public Float getCurrentPrice() {
return currentPrice;
}
public void setCurrentPrice(Float currentPrice) {
this.currentPrice = currentPrice;
}
public Float getDiscount() {
return discount;
}
public void setDiscount(Float discount) {
this.discount = discount;
}
public Integer getIsFreeDelivery() {
return isFreeDelivery;
}
public void setIsFreeDelivery(Integer isFreeDelivery) {
this.isFreeDelivery = isFreeDelivery;
}
public Long getCategoryId() {
return categoryId;
}
public void setCategoryId(Long categoryId) {
this.categoryId = categoryId;
}
}
mapper文件
<? 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.itlaoqi.babytun.dao.GoodsDAO\">
<select id=\"findById\" parameterType=\"long\" resultType=\"com.itlaoqi.babytun.entity.Goods\">
select * from t_goods where goods_id = #{value}
</select>
</mapper>
application.yml文件
server:
port: 80
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/babytun?useUnicode=true&characterEncoding=utf-8&useSSL=false
username: root
password: root
mvc:
favicon:
enabled: false
mybatis:
mapper-locations: classpath:/mapper/*.
configuration:
map-underscore-to-camel-case: true
templates目录下模板
<!DOCTYPE html>
<html lang=\"en\">
<head>
< charset=\"UTF-8\">
< >${goods. }</ >
< href=\"./layui/css/layui.css\" rel=\"stylesheet\">
< src=\"./layui/layui.all.js\"></ >
<style>
.bb-info li {
margin-top: 20px;
}
.bb-de ion img {
width: 100%;
}
.bb-param td:first-child {
background-color: #eeeeee;
}
.layui-this a{
font-size: 18px;
}
</style>
</head>
<body style=\"background-color: #eeeeee\">
<ul class=\"layui-nav layui-bg-green\">
<div class=\"layui-container\">
<li class=\"layui-nav-item\" style=\"background-color: orange;margin-left: -14px\"><a href=\" :void(0)\" style=\"font-size: 18px;color: white\">宝宝团商城</a></li>
<li class=\"layui-nav-item layui-this\"><a href=\"\">宝宝团</a></li>
<li class=\"layui-nav-item\"><a href=\"\">全球购</a></li>
<li class=\"layui-nav-item\"><a href=\"\">旗舰店</a></li>
<li class=\"layui-nav-item\"><a href=\"\">宝宝社区</a></li>
</div>
</ul>
<div class=\"layui-container\" style=\"padding: 10px;border: 1px solid #ccc;background-color:white\">
<span class=\"layui-breadcrumb\" style=\"visibility: visible;\">
<a href=\"/\">首页</a><span lay-separator=\"\">/</span>
<a><cite>${goods. }</cite></a>
</span>
<div class=\"layui-row\" style=\"padding-top: 10px\">
<div class=\"layui-col-xs4\">
<div class=\"layui-carousel\" id=\"test1\">
<div carousel-item>
<#list covers as c>
<div>
<img src=\"${c.gcPicUrl}\" style=\"width:100%\">
</div>
</#list>
</div>
</div>
</div>
<div class=\"layui-col-xs8\" style=\"padding: 10px\">
<ul class=\"bb-info\">
<li>
<h2>${goods. }</h2>
</li>
<li class=\"layui-bg-green\" style=\"padding:10px;line-height: 30px\">
${goods.sub }
</li>
<li style=\"color: darkgrey\">
<span>宝宝团价:</span><span style=\"font-size: 26px;color: orange;font-weight: bold\">${goods.currentPrice?string(\'¥0.00\')}</span><span
style=\"text-decoration: line-through\">¥${goods.originalCost?string(\'¥0.00\')}</span>
</li>
<li>
<span>运费: 6.0元 <#if goods.isFreeDelivery == 1>满58.0元包邮</#if></span>
</li>
<li>
数量:
<div class=\"layui-btn-group\">
<button class=\"layui-btn layui-btn-primary layui-btn-sm\">
<span style=\"font-size: 18px\">-</span></button>
<button class=\"layui-btn layui-btn-primary layui-btn-sm\" style=\"width: 50px\">1</button>
<button class=\"layui-btn layui-btn-primary layui-btn-sm\"><span style=\"font-size: 18px\">+</span>
</button>
</div>
</li>
<li>
<button class=\"layui-btn layui-btn-radius layui-btn-normal\">立即购买</button>
<button class=\"layui-btn layui-btn-radius layui-btn-danger\">加入购物车</button>
</li>
</ul>
</div>
</div>
<div class=\"layui-row\">
<div class=\"layui-tab layui-tab-brief\" lay-filter=\"docDemoTabBrief\">
<ul class=\"layui-tab- \">
<li class=\"layui-this\">产品详情</li>
<li>产品参数</li>
</ul>
<div class=\"layui-tab-content\">
<div class=\"layui-tab-item layui-show bb-de ion layui-col-xs8 layui-col-xs-offset2\">
<#list details as d>
<img src=\"${d.gdPicUrl}\">
</#list>
</div>
<div class=\"layui-tab-item layui-col-xs8 layui-col-xs-offset2\">
<table class=\"layui-table bb-param\" lay-size=\"lg\">
<colgroup>
<col width=\"30%\">
<col width=\"70%\">
</colgroup>
<tbody>
<#list params as p>
<tr>
<td>${p.gpParamName}</td>
<td>${p.gpParamValue}</td>
</tr>
</#list>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
< >
//由于模块都一次性加载,因此不用执行 layui.use() 来加载对应模块,直接使用即可:
;!function () {
var = layui.
, form = layui.form;
}();
</ >
< >
layui.use(\'carousel\', function () {
var carousel = layui.carousel;
//建造实例
carousel.render({
elem: \'#test1\'
, width: \'380px\' //设置容器宽度
, height: \'380px\'
, arrow: \'hover\' //始终显示箭头
, anim: \'fade\' //切换动画方式
});
});
</ >
</body>
</html>
继续阅读与本文标签相同的文章
最常用的N种最有效的店铺运营技巧,果断收藏
-
两问快递涨价
2026-05-19栏目: 教程
-
一图了解顺丰全球供应链网络布局
2026-05-19栏目: 教程
-
这款 IDE 插件再次升级,让「小程序云」的开发部署提速 8 倍
2026-05-19栏目: 教程
-
专注于技术能力提升的央企,注定不平凡,我有看点!
2026-05-19栏目: 教程
-
男友力爆棚的Mac电脑办公软件WPS Office
2026-05-19栏目: 教程
