为了账号安全,请及时绑定邮箱和手机立即绑定

Java高并发秒杀API之业务分析与DAO层

  • 实际上配置: 1.logback-classic(另外两个会自动依赖) 2.mysql、c3p0 3.mybatis、mybatis-spring、standard、jstl、jackson-databind、javax.servlet-api 4.spring-jdbc(会依赖spring-beans、spring-core、spring-tx)、spring-webmvc(会依赖spring-web、spring-context)、spring-test 具体相关依赖可以参考笔记内容
    查看全部
  • 竞争出现在update
    查看全部
  • CREATE TABLE seckill( `seckill_id` bigint NOT NULL AUTO_INCREMENT COMMENT '商品库存id', `name` VARCHAR(120) NOT NULL COMMENT '商品名称', `number` int NOT NULL COMMENT '库存数量', `start_time` TIMESTAMP NOT NULL COMMENT '秒杀开启时间', `end_time` TIMESTAMP NOT NULL COMMENT '秒杀结束时间', `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (seckill_id), KEY idx_start_time(start_time), KEY idx_end_time(end_time), KEY idx_create_time(create_time) )ENGINE=InnoDB AUTO_INCREMENT=1000 DEFAULT CHARSET=utf8 COMMENT='秒杀库存表';
    查看全部
  • 防止用户重复秒杀,使用商品id和用户手机号做联合主键
    查看全部
  • 使用spring提供的junit的测试方法使得测试更加简单,因为SpringJunit4ClassRunner开始测试时会自动启动Ioc容器,同时使用@ContextCongiguration({”classpath:….xml”})注解告诉spring容器要加载的上下文信息在哪里。这样就可以正常启动IOC容器了。同时在测试DAO层操作数据库是,使用@Resource注解注入测试依赖,才能操作数据库。 spring mybatis junit 整合操作数据库使用到的四个注解 @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration({"classpath:****.xml"}) @Resource @Param(“形参”) 在接口提供多个参数时,mybatis默认只能接受一个参数,或者对参数进行封装为一个参数,如果使用多个参数,注意使用mybatis提供的形参注解@Param()
    查看全部
  • java没有保留形参的名字,他是以agr0,agr1来表示,在mybatis中如果要表示多个参数的传进来,要用注解@Param来指定参数名,如果是一个参数,那不用指定。 java运行时不保存形参名称(arg1,arg2....), mybatis(多参数传入时,将参数封装成map) 通过@Param注解,定义映射时的键值,不进行注解映射时,通过#{0},#{1}取值 使用mybatis DAO接口给xml中的sql传参数的时候,当需要传送多个参数的时候需要使用mybatis的注解@Param标注这个参数的参数名,否则会出现参数名无法找到的错误,原因是,java在动态执行方法的时候,会将方法中的形参替换成arg0,arg1等,现在定义好的参数名被踢换,导致在mybatis的sqlxml配置文件中没有对应。 mybatis传递多个参数,使用@Param,告诉mybatis,传递的形参的名字是什么。如果不用该注解,mybatis会自动将这些参数命名为arg0,arg1,arg2,arg3.。。 java存在这样的问题 - 在DAO接口设计时不给明参数的话,(dao接口上没有该参数,在mapper.xml中的sql语句中有该参数的情况下)Java获取不到,因为参数在java中是arg0,arg1形式的存在 (也就是参数无法识别) 解决方案: offet 也就是arg0 通过@Parm("xxxxx"),告诉Mybatis实际上正确的形参叫做offset
    查看全部
  • spring和Mybatis整合四布: 1. 配置数据库相关参数 2. 配置数据库的连接池 3. 配置sqlSessionFactory对象 4. 配置扫描DAO接口包,动态实现DAO接口,并注入spring容器中
    查看全部
  • 行级锁
    查看全部
  • 1.logback-classic(另外两个会自动依赖) 2.mysql、c3p0 3.mybatis、mybatis-spring、standard、jstl、jackson-databind、javax.servlet-api 4.spring-jdbc(会依赖spring-beans、spring-core、spring-tx)、spring-webmvc(会依赖spring-web、spring-context)、spring-test 具体相关依赖可以参考笔记内容
    查看全部
  • java没有保留形参的名字,他是以agr0,agr1来表示,在mybatis中如果要表示多个参数的传进来,要用注解@Param来指定参数名,如果是一个参数,那不用指定。
    查看全部
  • ignore 关键字(insert ignore into) 当主键冲突时,不报错 ,而返回‘0’,表示插入失败
    查看全部
  • IDEA中,在类名上按 Ctrl+Shift+T 键可以快速创建Test类
    查看全部
  • 1.Dao命名规范:实体名+Dao • 一般Dao是针对具体某一实体进行数据操作 • SeckillDao:秒杀商品列表Dao • SuccessKilledDao:成功秒杀商品Dao 2.围绕增删改查设计接口 • 增:插入购买明细(SuccessKilledDao) 通过复合主键过滤重复 • 改:减库存(SeckillDao) • 查:根据id查询单个商品、根据偏移量查询商品列表、根据id查询成功秒杀商品并携带商品实体(多对一) 3.Mybatis特点:提供参数和SQL(需要自己写SQL语句) 4.SQL写在哪:XML(推荐)和注解 5.接口的实现:接口式编程(Mapper自动实现接口)、API编程方式实现接口(如SqlSession) 6.相关配置文件:mybatis-config.xml、mapper/*.xml 7.mybatis官方文档:http://www.mybatis.org/mybatis-3/zh/index.html 8.mybatis-config.xml的配置:这里主要配置useGeneratedKeys(自动生成主键)、mapUnderscoreToCamelCase(驼峰命名映射)和useColumnLabel(使用列标签代替列名,默认为true,可以不配置) • 参考http://www.mybatis.org/mybatis-3/zh/configuration.html#settings • 其他mybatis配置(如声明式事务等)将在与spring整合时spring-dao.xml中在配置 9.mapper • 命名规范:Dao名.xml • 目的:为Dao接口方法提供sql语句配置 • 映射方法:namespace = Dao的全限定名、标签id = 接口方法名 • parameterType、resultType、parameterMap、resultMap
    查看全部
  • mvn 新版本 create 变成了 generate
    查看全部
  • 看我手写 一个 啊 ,, mvn archetype:create -DgourpId = org.seckill -DartifactId = seckill -D archetypeArtifactId= maven-archetype-webapp
    查看全部

举报

0/150
提交
取消
课程须知
《Java高并发秒杀API》是系列课程,共四门课,分别为业务分析和DAO层,Service层,Web层和高并发优化。本门课程是第一门课程,学习前需要了解如下知识: 1、精通JavaWeb基础 2、熟悉SpringMVC、Spring和MyBatis框架
老师告诉你能学到什么?
1、掌握秒杀业务 2、能够进行SpringMVC+Spring+MyBatis的整合开发 3、能够进行秒杀业务DAO层的设计与实现

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!