1.实体类解析与表的创建








$商品类别$:
1:商品类别的id
2:店铺id
3:商品类别的名称
4:商品类别的权重
5:商品创建时间
$详情图片:$

1:详情图片的id
2.图片的地址
3.图片显示的权重 大靠前显示
4.创建时间
5.属于那个商品的详情图片(多对一)的关系






2 SprintBoot环境搭载
2.1 maven依赖
1 | <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
###2.2 环境搭建SSM
jdbc.properties
1 | jdbc.driver=com.mysql.jdbc.Driver |
logback.xml
1 |
|
mybatis-config.xml
1 |
|
redis.properties
1 | redis.hostname=127.0.0.1 |
weixin.properties
1 | weixinappid=PTv/7qETW0kO5N0WT223IlBEOUuK0+SO |
web.xml
1 | <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
Spring
spring-dao.xml
1 |
|
spring-redis.xml
1 | <beans xmlns="http://www.springframework.org/schema/beans" |
spring-service.xml
1 |
|
spring -web.xml
1 |
|
3 SpringBoot整合SSM项目
1 | # mybatis |
4 项目1.0开发 店铺注册功能模块

4.1新增加店铺跟新店铺开发
dao层
1
2//1 开发功能1 新增店铺
int insert(TbShop record);xml
1 | <insert id="insert" keyColumn="shop_id" keyProperty="shopId" parameterType="com.imooc.o2o.o2o.domain.TbShop" useGeneratedKeys="true"> |
1
int updateByPrimaryKeySelective(TbShop record);
1
2
3
4
5
6
7
8
9
10
11/**
* update tb_shop
* <set>
* <if test="ownerId != null">
* owner_id = #{ownerId,jdbcType=INTEGER},
* area_id = #{areaId,jdbcType=INTEGER},
* </if>
* <if test="shopCategoryId != null">
* </set>
* where shop_id = #{shopId,jdbcType=INTEGER}
*/
4.2 Thumbnailator图片处理和封装Util
1 | <!-- https://mvnrepository.com/artifact/net.coobird/thumbnailator --> |
1 | Thumbnails.of(new File("original.jpg")) |
1 | Thumbnails.of(new File("original.jpg")) |
5 thumbnails图像处理库的使用
- imageUtils
1 | package com.imooc.o2o.o2o.util; |
- FileUtil
1 | package com.imooc.o2o.o2o.util; |
6 Dto的开发
1 | public class ShopExcution { |
1 | public enum ShopStateEnum { |
7 Service层的开发—添加店铺 和店铺图片
1 | public class ShopServiceImpl implements ShopService { |
1 | public class ShopOperationException extends RuntimeException { |
8 店铺注册功能Controller层的实现 ⭐️ ⭐️ ⭐️
1 | //实现店铺管理相关的逻辑店铺注册功能Controller层的实现 |
1 HttpServletRequestUtils
1 | import javax.servlet.http.HttpServletRequest; |
Jackson之jackson-databind
https://blog.csdn.net/u011499747/article/details/78762007 CSDN 博客
https://github.com/FasterXML/jackson-databind Github官网API
1 | <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core --> |
POJO和JSON之间的转化
给出一个足够简单的POJO:
1 | public class MyValue { |
注意:如果使用getters/setters的话,可以用private/protected修饰属性,这里直接用public修饰了,就不需要getters/setters了。
使用databind,我们需要一个最基础的对象com.fasterxml.jackson.databind.ObjectMapper,这里我们构造一个:
1 | ObjectMapper mapper = new ObjectMapper(); |
注意:这个mapper是可以复用的,就好比HttpClient一样。
简单的把JSON反序列化成Object的用法如下
1 | MyValue value = mapper.readValue(new File("data.json"), MyValue.class); |
简单的把Object序列化成JSON的用法如下:
1 | mapper.writeValue(new File("result.json"), myResultObject); |

可以从Jackson-docs存储库中找到更全面的文档; 以及来自该项目的Wiki。但这里有简要的介绍性教程,建议阅读顺序。
1分钟教程:POJO到JSON并返回
最常见的用法是使用JSON,并从中构造一个Plain Old Java Object(“POJO”)。那么让我们从那里开始。简单的2属性POJO像这样:
1 | //注意:也可以使用getter / setter; 这里我们直接使用公共字段: |
我们需要一个com.fasterxml.jackson.databind.ObjectMapper用于所有数据绑定的实例,所以让我们构造一个:
1 | ObjectMapper mapper = new ObjectMapper(); //创建一次,重用 |
默认实例适合我们使用 - 稍后我们将了解如何在必要时配置映射器实例。用法很简单:
1 | MyValue值= mapper 。readValue(新 文件(“ data.json ”),myvalue的。类); |
如果我们想写JSON,我们会做相反的事情:
1 | 映射器。writeValue(新 文件(“ result.json ”),myResultObject); |
到现在为止还挺好?
3分钟教程:通用集合,树模型
除了处理简单的Bean风格的POJO之外,您还可以处理JDK List,Maps:
1 | Map < String,Integer > scoreByName = mapper 。readValue(jsonSource,Map 。类); |
只要JSON结构匹配,类型就很简单。如果您有POJO值,则需要指明实际类型(注意:对于具有Listetc类型的POJO属性,这不是必需的):
1 | Map < String,ResultValue > results = mapper 。readValue(jsonSource, |
(注意:无论通用类型如何,序列化都不需要额外的努力)
可是等等!还有更多!
虽然处理Maps,Lists和其他“简单”对象类型(字符串,数字,布尔值)可能很简单,但对象遍历可能很麻烦。这就是Jackson’s Tree模型可以派上用场的地方:
1 | //可以读作通用的JsonNode,如果它可以是Object或Array; 或者, |
树模型比数据绑定更方便,特别是在结构高度动态或不能很好地映射到Java类的情况下
SpringMVC 图片上传操作待定
1 | CommonsMultipartFile shopImg = null; |
9 SUIMobile
1 |
|
店铺注册之JS 实现





1 |
10 店铺类别区域信息的获取
1 | public interface ShopService { |
1 | public interface ShopCategoryService { |
1 | //查询 TbShopCategory 用mybatispluginshelp2.4开发升级的 |
1 | <select id="findAllByParentIdAndShopCategoryId" resultMap="BaseResultMap"> |
1 | Controller层的实现 |
11 AreaService
1 | public interface AreaService { |
1 |
|
12AreaController
1 |
|
#13使用 SpringBoot + kaptcha 生成、校对 验证码
1 | 2、pom |
14 SpringBoot 整合日志文件
1 依赖
1 | dependencies> |