慕课网项目:Java高并发秒杀API的学习笔记(一)总述及DAO层分析

课程链接:Java高并发秒杀API之业务分析与DAO层
CSDN参考:CSDN参考:Java高并发秒杀API(一)之业务分析与DAO层

 

笔者这几天忙着做项目,朋友推荐我去看这个慕课网的Java高并发秒杀API视频。看完之后真的是感觉干货满满且自己能力不足。

本篇文章根据我自己的编程理解,结合参考的博客对该项目DAO层进行分析与补充。

(中间笔记本突然死机,再次登录一看竟然什么都没有了。心若在梦就在只不过是从头再来。)

0.安装maven

笔者在安装maven时,调用mvn -v总是提示jdk安装不正确。重启了两次之后莫名其妙的又正确了。

笔者用idea创建maven项目的时候,总是要卡住半天。经过解决IntelliJ IDEA 创建Maven项目速度慢问题正常了。

1.SSM使用与整合

A.互联网公司常用框架

易于使用,轻量级;低代码侵入性;成熟社区与用户群。

B.为什么用秒杀类系统来讲?

秒杀业务场景有典型的“事物特性”;秒杀/红包类需求越来越常见;面试常问问题。

C.你能学到什么?

初学者->框架使用与整合技巧。

较高段位->秒杀分析过程与优化过程。

2.技术点

A.MySql:

表设计;SQL技巧;事物及行级锁。

B.MyBatis:

DAO层设计与开发;合理使用;MyBatis与Spring整合。

C.Spring

IoC整合Service;声明式事物运用。

D.SpringMVC

Restful接口设计和使用;框架运作流程;Controller开发技巧。

E.前端

交互设计;BootStrap;JQuery。

F.高并发

高并发点分析;优化思路及实现。

以下内容请结合引用的CSDN博客阅读。

3.pom.xml文件

一定要考虑到版本兼容的问题!我用的spring5,在后面配置xml的时候发生了莫名其妙的问题。另外我用的c3p0版本0.9.1.2在配置xml的时候也出现了问题,换成0.9.1.1正常了。

4.一些名词

“回滚”。我理解为:到执行中遇到问题,放弃原操作回到原来状态。比如打仙剑,达到boss被团灭了。这时候我们就要读档再来。(我停电了就直接回归到了最初的状态)

“行级锁”。数据库中锁住其中的一行,同时不影响其他行,以保证数据库高效。

5.数据库表设计

秒杀库存表seckill(seckill_id,name,number,create_time,start_time,end_time);

秒杀成功明细表success_killed(seckill_id,user_phone,state,create_time);

6.根据表设计Entry

public class Seckill {
    private Long seckillId;
    private String name;    
    private Integer number;//库存剩余数
    private Date createTime;
    private Date startTime;
    private Date endTime;
}
public class SuccessKilled {
    private Byte state;
    private Date createTime;
    private Long seckillId;
    private Long userPhone;
    //方便得到其对应的Seckill,而不需要在根据seckillId查找数据库
    private Seckill seckill;
}

7. 创建实体类对应的DAO层接口(也就是Mapper接口)

(详情见引用的CSDN博客)务必牢记@Param,这个注解是在太有用。

8.Mybatis用来做什么?

我理解为:他是数据库与我们使用对象之间的中间层!他是两者之间的联系与映射。

这里有一张图与大家分享:

慕课网项目:Java高并发秒杀API的学习笔记(一)总述及DAO层分析_第1张图片

它的特点是:参数+SQL=Entry/List

可以去MyBatis官方网站进行阅读(他在主站默认提供了简体中文的翻译!)

我以后会专门写一篇博客专门简单探讨MyBatis,这里回到项目。

首先要配置MyBatis的全局属性。然后针对每一个DAO层接口,按照MyBatis规范书写其逻辑sql。

9.整合spring与Mybatis。

为什么要整合?

更少的编码。只写接口不写实现。将参数、行为、结果集交给sql。

更少的配置。Mybatis可以识别package-scan;扫描配置:自动扫描配置文件;dao实现:自动实现DAO接口,自动注入spring容器。

灵活性。自制SQL自由传参;结果集自动赋值。

怎么整合?

配置数据库相关参数;配置数据库连接池;配置SqlSessionFactory对象(开始真正的整合过程);配置扫描DAO接口包,动态实现DAO接口,注入到spring容器。

10.总结,到这里,我们完成了:

pom.xml导入依赖。

(Model)Seckill表——Seckill Entry;SuccessKilled表——SuccessKilled Entry。

mybatis-config.xml配置MyBatis的全局属性。

(DAO)SeckillDao——SeckillDao.xml;SuccessKilledDao——SuccessKilled.xml。

spring-dao.xml整合spring与Mybatis。

你可能感兴趣的:(高并发-秒杀,java,ssm,java,ssm,高并发,秒杀,dao)