一、数据库
decimal
数据库中表示较高精度的类型,eg:decimal(20,2) 20位有效位,保留两位小数。可用于表示价格、金额。
在java中可以用BigDecimal类型,来进行数据运算。
Undo:商业运算精度丢失。
bigint
可用于订单编号等较长数字的表示。
在java中对应long类型。
订单明细表
商品id、图片、详情,不可以直接去商品表查询,因为这里是一个快照。
唯一索引
- user表中的username
- order表中的order_no
单索引及组合索引
使查询更加快速
- mall_order_item 中的order_no_index单索引
- mall_order_item 中的order_no_user_id_index组合索引
二、项目初始化
为什么选择Mybatis
参考:https://blog.csdn.net/leijie0322/article/details/124662041
详解SpringMVC
Maven/git
mybatis——Generator
快捷迅速的生成dao层接口、pojo层对象、表格的xml映射文件。
now() 获取当前时间戳的函数。
mybatis——Plugin
几年前第一次配这个项目的时候还在用,搜了一下现在居然闭源了,说是大佬转行了 现在是2022.03 裁员风很大,hc缩招风很大, anyway,我还是要做一个逆流勇进的,憨憨。
spring-petclinic/greenhouse/springboot
马克,尝试运行一下这个程序
idea快捷功能
/**+回车 注释
psvm + Tab2 主函数
sout + Tab2 输出
三、用户模块
功能:
- 登录
- 用户名验证
- 注册
- 忘记密码
- 提交问题答案
- 重置密码「忘记密码、登录状态」
- 获取用户信息
- 更新用户信息
- 退出登录
学习重点
- 横向越权、纵向越权安全漏洞
横向越权:攻击者尝试访问相同权限用户资源
纵向越权:低级别攻击者尝试访问高级别用户的资源 - MD5明文加密、增加salt值
- Guava缓存使用
- 高复用服务响应对象的设计思想及抽象封装
- Mybatis-Plugin(MybatisX)使用技巧
- Session使用
- SpringMVC数据绑定(慕课视频)
搭建
- 在controller包中创建portal包,代表门户、前台
- 创建UserController类,添加@Controller以及@ResquestMapping注解
- 开始编写方法
笔记
1. 注解
2. session
为了保存用户状态而创建的变量
3.高复用的返回对象
equal注意点
注意避免有可能为空的字符串出现在前面
static
静态方法和静态变量一样,属于这个类,而不属于某个对象,所有对象共用,在类装载时装载。
Md5加密工具对字符串进行加密的使用
- 通过信息摘要单例的构造函数获取信息摘要对象MD5
MessageDigest md5 = MessageDigest.getInstance("MD5");
- 获取字符串的字节数组
原因:信息摘要对象是对字节数组进行摘要。
byte[] digest = md5.digest(bytes);
- 将摘要数组中每字节转换成16进制并拼在一起
完整代码
public class MD5Tool {
public static void main(String[] args) throws Exception {
/*--------------字符串--------------*/