数据表结构设计
唯一索引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 |
|