如果您没有看这个系列的前两篇,请查看,地址如下:
实战篇:基于SSM的秒杀系统之项目介绍
实战篇:基于SSM的秒杀系统之项目搭建和数据库设计
今天开始介绍 DAO 层的搭建【完整的代码在文章后边给出】
实体类的创建,实体类和数据库表一一对应
秒杀实体类
秒杀成功实体类
//秒杀的商品的ID
private long seckillId;
//秒杀用户的电话
private long userPhone;
//秒杀商品的状态
private short state;
//秒杀成功的时间
private Date creteTime;
// 多对一的复合属性
private Seckill seckill;
在秒杀成功实体类中,除了和数据库一一对应的属性之外还多了一个复合属性,就是秒杀实体的对象,这个用来保存用户所秒杀的实体的信息。
DAO接口设计
DAO接口的设计分为两个:一个是对秒杀库存的操作,一个是对用户秒杀行为的操作。由于采用mybatis所以这里采用接口类的形式
这个是秒杀库存的操作接口类SeckillDao
/**
* 减库存
*
* @param seckillId
* @param killTime
* @return 如果影响行数等于>1,表示更新的记录行数
*/
int reduceNumber(@Param(“seckillId”) long seckillId, @Param(“killTime”) Date killTime);
/**
* 根据id查询秒杀对象
*
* @param seckillId
* @return
*/
Seckill queryById(long seckillId);
/**
* 根据 偏移量 查询秒杀商品列表
*
* @param offset
* @param limit
* @return
*/
List<Seckill> queryAll(@Param(“offset”) int offset, @Param(“limit”) int limit);
下面是秒杀操作实体接口类
/**
* 插入购买明细,可过滤重复
*
* @param seckillId
* @param userPhone
* @return 插入的行数
*
*/
int insertSuccessKilled(@Param(“seckillId”) long seckillId, @Param(“userPhone”) long userPhone);
/**
* 根据id查询SuccessKilled并携带秒杀产品对象实体
*
* @param seckillId
* @param userPhone
* @return
*/
SuccessKilled queryByIdWithSeckill(@Param(“seckillId”) long seckillId, @Param(“userPhone”) long userPhone);
配置文件【给出图示,具体代码见文章后边链接】
mybatis的mapper文件
mapper文件中写了具体的 sql 的实现
Spring配置文件
配置了数据库 SqlSessionFactory等的配置
jdbc 配置文件
数据库基本信息的配置
日志配置文件
日志信息的配置
mybatis配置文件
mybatis框架的配置
具体完整的代码在下面的链接
谢谢阅读!