基于Mybatis
的Java高并发之秒杀系统DAO层开发。
一、数据库编码设计
创建秒杀库存表seckill记录秒杀的商品
其中商品id为主键。
分别对秒杀开启时间,秒杀结束时间,创建时间建立索引优化查询。
1 | --创建秒杀库存表 |
初始化秒杀库存表中的商品
1 | -- 初始化数据 |
创建秒杀成功明细表success_killed记录秒杀成功订单信息
- 以秒杀商品id与用户手机号作为联合主键。
1 | -- 秒杀成功明细表 |
二、DAO实体和编码设计
实体属性映射数据库表的列名。
DAO接口定义方法。
- 使用
lombok
插件简化代码 - 属性名称遵循
驼峰命名
。
Seckill.java
1 |
|
SuccessKilled.java
1 |
|
SeckillDao接口
1 | public interface SeckillDao { |
SuccessKilledDao接口
1 | public interface SuccessKilledDao { |
三、基于Mybatis实现DAO编程
Mybatis配置文件(mybatis-config.xml)
在resource文件夹下创建mybatis-config.xml。
- 引入配置文件的DTD约束。
- 当设置了useGeneratedKeys=“true”,Mybatis会调用JDBC的getGeneratedKeys方法,并将获取的主键值赋值给keyProperty 指定的属性。
- 使用别名替换列名。 例如:
select name as title from table
,默认使用title。 - 开启驼峰命名转换。
使用前提:数据库表设计按照规范“字段名中各单词使用下划线”_“划分”;seckill_id–>seckillId。
1 |
|
SeckillDao映射文件(SeckillDao.xml)
实现SeckillDao接口中定义的方法
1 |
|
SuccessKilledDao映射文件(SuccessKilledDao.xml)
实现SuccessKilledDao接口中定义的方法
1 |
|
四、Spring整合Mybatis
Spring4.0.4
官方文档数据源配置属性前要加jdbc
。
jdbc.properties
配置驱动,连接地址,用户名,密码
1 | jdbc.driver=com.mysql.cj.jdbc.Driver |
Spring整合Mybatis文件(spring-dao.xml)
1 |
|
五、DAO层单元测试
在IDEA中选中需要单元测试的类按下Ctrl+Shift+T,创建测试类
1 | (SpringJUnit4ClassRunner.class) |
1 | /** |