课程链接:Java高并发秒杀API之业务分析与DAO层
CSDN参考:CSDN参考:Java高并发秒杀API(一)之业务分析与DAO层
笔者这几天忙着做项目,朋友推荐我去看这个慕课网的Java高并发秒杀API视频。看完之后真的是感觉干货满满且自己能力不足。
本篇文章根据我自己的编程理解,结合参考的博客对该项目DAO层进行分析与补充。
(中间笔记本突然死机,再次登录一看竟然什么都没有了。心若在梦就在只不过是从头再来。)
笔者在安装maven时,调用mvn -v总是提示jdk安装不正确。重启了两次之后莫名其妙的又正确了。
笔者用idea创建maven项目的时候,总是要卡住半天。经过解决IntelliJ IDEA 创建Maven项目速度慢问题正常了。
A.互联网公司常用框架
易于使用,轻量级;低代码侵入性;成熟社区与用户群。
B.为什么用秒杀类系统来讲?
秒杀业务场景有典型的“事物特性”;秒杀/红包类需求越来越常见;面试常问问题。
C.你能学到什么?
初学者->框架使用与整合技巧。
较高段位->秒杀分析过程与优化过程。
A.MySql:
表设计;SQL技巧;事物及行级锁。
B.MyBatis:
DAO层设计与开发;合理使用;MyBatis与Spring整合。
C.Spring
IoC整合Service;声明式事物运用。
D.SpringMVC
Restful接口设计和使用;框架运作流程;Controller开发技巧。
E.前端
交互设计;BootStrap;JQuery。
F.高并发
高并发点分析;优化思路及实现。
以下内容请结合引用的CSDN博客阅读。
一定要考虑到版本兼容的问题!我用的spring5,在后面配置xml的时候发生了莫名其妙的问题。另外我用的c3p0版本0.9.1.2在配置xml的时候也出现了问题,换成0.9.1.1正常了。
“回滚”。我理解为:到执行中遇到问题,放弃原操作回到原来状态。比如打仙剑,达到boss被团灭了。这时候我们就要读档再来。(我停电了就直接回归到了最初的状态)
“行级锁”。数据库中锁住其中的一行,同时不影响其他行,以保证数据库高效。
秒杀库存表seckill(seckill_id,name,number,create_time,start_time,end_time);
秒杀成功明细表success_killed(seckill_id,user_phone,state,create_time);
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;
}
(详情见引用的CSDN博客)务必牢记@Param,这个注解是在太有用。
我理解为:他是数据库与我们使用对象之间的中间层!他是两者之间的联系与映射。
这里有一张图与大家分享:
它的特点是:参数+SQL=Entry/List
可以去MyBatis官方网站进行阅读(他在主站默认提供了简体中文的翻译!)
我以后会专门写一篇博客专门简单探讨MyBatis,这里回到项目。
首先要配置MyBatis的全局属性。然后针对每一个DAO层接口,按照MyBatis规范书写其逻辑sql。
为什么要整合?
更少的编码。只写接口不写实现。将参数、行为、结果集交给sql。
更少的配置。Mybatis可以识别package-scan;扫描配置:自动扫描配置文件;dao实现:自动实现DAO接口,自动注入spring容器。
灵活性。自制SQL自由传参;结果集自动赋值。
怎么整合?
配置数据库相关参数;配置数据库连接池;配置SqlSessionFactory对象(开始真正的整合过程);配置扫描DAO接口包,动态实现DAO接口,注入到spring容器。
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。