数据表结构设计
唯一索引unique,保证数据唯一性
1  | CREATE TABLE `mmall_user` (  | 
单索引及组合索引
1  | CREATE TABLE `mmall_order_item` (  | 
查业务问题的后悔药
create_time 数据创建时间update_time 数据更新时间
mybatis三剑客
mybatis-generator自动化生成数据库交互代码
配置pom.xml
1  | <build>  | 
datasource.properties
1  | db.driverLocation=/Users/imooc/mysql-connector-java-5.1.6-bin.jar  | 
generatorConfig.xml
1  | 
  | 
运行

mybatis-plugin idea插件,实现mybatis的接口文件和xml自动跳转
mybatis-pagehelper mybatis分页组件
配置pom.xml
1  | <!-- mybatis pager -->  | 
Tomcat加载spring、springmvc
方式一:配置web.xml
1  | 
  | 
方式二:配置web.xml
1  | 
  | 
测试插件
用户模块
横向越权
入参需要指定当前用户id

纵向越权
MD5明文加密
盐值加密

MD5Util.java
1  | package com.mmall.util;  | 
PropertiesUtil.java
读取src/main/resources目录下的配置文件
1  | package com.mmall.util;  | 
mmall.properties
1  | ftp.server.ip=你的FTP服务器ip地址  | 
应用:明文加密

guava缓存
设置token并传给前台用户

验证token
TokenCache.java
1  | package com.mmall.common;  | 
UserServiceImpl.java
1  | 
  | 
高复用服务响应对象的设计思想和封装
ServerResponse.java
1  | 
  | 
ResponseCode.java
1  | package com.mmall.common;  | 
分类模块
递归算法
1  | 
  | 
复杂对象排重
Set集合

重写自定义对象Category的equals和hashCode方法

无限层级树结构设计

商品模块
POJO、BO、VO抽象模型

Product.java
1  | package com.mmall.pojo;  | 
ProductDetailVo.java
1  | package com.mmall.vo;  | 
静态代码块>普通代码块>构造代码块
Tomcat启动加载静态代码块

时间转换工具类DateTimeUtil.java
1  | package com.mmall.util;  | 
mybatis-pagehelper高效分页
配置pom.xml

实现

mybatis-pagehelper动态排序

mybatis对List遍历的实现方法

mybatis对where语句动态拼装


FTP服务对接
先将文件上传到本地======>上传到远程ftp====>删除本地文件
配置pom.xml
1  | <!-- file upload -->  | 
配置dispatcher-servlet.xml
1  | <!-- 文件上传 -->  | 
FileServiceImpl.java
1  | 
  | 
连接远程ftp,上传文件
FTPUtil.java
1  | package com.mmall.util;  | 
富文本上传
和ftp文件上传类似,只是对返回值有特殊要求

购物车模块
商品总价计算复用封装
1  | package com.mmall.util;  | 
高复用的逻辑方法封装思想


解决商业运算丢失精度的坑
一定要用BigDecimal的String构造函数
1  | public class BigDecimalTest {  | 
订单模块
安全漏洞解决方案
订单号生成规则

强大的常量、枚举设计
Const.java
1  | package com.mmall.common;  | 
使用


mybatis批量插入



收货地址
同步获取自增主键


数据绑定的对象绑定

收货地址对象必须要有get和set方法

越权问题升级巩固
支付模块
支付宝SDK源码解析

支付宝支付流程与集成
导入依赖

配置maven插件,除了pom.xml配置的依赖,lib包中的依赖也会一起打包部署

配置沙箱环境zfbinfo.properties
1  | # 支付宝网关名、partnerId和appId  | 
二维码生成,扫码支付
配置回调url

两次回调,扫码进行一次回调,扫码付款成功进行一次回调


生成二维码,上传到ftp服务器

OrderServiceImpl.java
1  | 
  |