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

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

  • ## SecKillDao.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE mapper
            PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="cn.dangkei.dao.SecKillDao">
        <!--目的:为dao接口方法提供sql语句配置
        即针对dao接口中的方法编写我们的sql语句-->
        <update id="reduceNumber">
            update
            seckill
            set
            number = number -1
            where seckill_id = #{seckillId}
            AND start_time <![CDATA[ <=]]> #{killTime}
            AND end_time >=#{killTime}
            AND number > 0
        </update>
        <select id="queryById" resultType="SecKill" parameterType="long">
            select * from seckill where seckill_id = #{seckillId}
        </select>
        <select id="queryAll" resultType="SecKill">
            select * from seckill ORDER BY create_time DESC
            limit #{offset},#{limit}
        </select>
    </mapper>


    ## SuccessKilledMapper.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE mapper
            PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="cn.dangkei.dao.SuccessKillDao">
        <insert id="insertSuccessKilled">
            <!--当出现主键冲突(即重复秒杀),报错,如果不想让程序报错,加入ignore-->
            Insert ignore INTO success_killed(seckill_id,user_phone,state,)
            VALUES(#{seckillId},#{userPhone},0)
        </insert>
        <select id="queryByIdWithSeckill" resultType="cn.dangkei.entity.SuccessKilled">
            <!--根据seckillId查询SuceessKilled对象,并携带Seckill对象-->
            <!--如何告诉mybatis把结果映射到SuccessKill属性同时映射到secKill属性-->
            <!--可以自由控制SQL语句-->
            SELECT
            sk.seckill_id,
            sk.user_phone,
            sk.create_time,
            sk.state,
            s.seckill_id "seckill.seckill_id",
            s.name "seckill.name",
            s.number "seckill.number",
            s.start_time "seckill.start_time",
            s.end_time "seckill.end_time",
            s.create_time "seckill.create_time"
            FROM success_killed sk
            INNER JOIN seckill s ON sk.seckill_id=s.seckill_id
            WHERE sk.seckill_id=#{seckillId} and sk.user_phone=#{userPhone}
        </select>
    </mapper>
    查看全部
  • ## 使用骨架创建mvn项目

    mvn archetype:create -DgroupId=org.seckill -DartifactId=seckill -DarchetypeArtifactId=maven-archetype-


    ## web.xml 升级servlet3.1 

    webapp

    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                          http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
             version="3.1"
             metadata-complete="true">
    </web-app>
    
    ## 配置 
    logback配置:http://logback.qos.ch/manual/configuration.html
    spring配置:http://docs.spring.io/spring/docs/
    mybatis配置:http://mybatis.github.io/mybatis-3/zh/index.html
    查看全部
    0 采集 收起 来源:创建项目和依赖

    笔记审核中笔记正在审核中,仅自己可见 2022-08-10

  • mvn创建的最后一个参数表示使用mvn的原型

    webapp的原型来创建项目

    查看全部
  • 用Maven命令创建web项目

    http://img1.sycdn.imooc.com//60d299240001345a18720766.jpg

    查看全部







  • MyBatis和HIBERNATE都是用来ORM映射的

    MyBatis的特点:参数 + SQL = Entity/List (提供参数和SQL语句)

    两种方式提供SQL:1、XML提供SQL (推荐)  2、注解提供SQL

    如何DAO接口?

    1、Mapper自动实现DAO接口 (推荐)

    2、API编程方式实现DAO接口

    查看全部
  • 减库存和记录购买明细构成一个事务,事务机制依然是目前最可靠的落地方案

    NoSQL对于事务的支持不是很好

    查看全部
    0 采集 收起 来源:秒杀业务分析

    2021-05-14

  • 目录结构

    查看全部
  •  mapper写法

    查看全部
  • 配置全局属性:

    • 使用jdbc的getGeneratedKeys 获取数据库自增主键

    • 使用列别名替代列名,自动转换为entity里的属性 useColumnLabel

    • 开启驼峰命名转换 mapUnderscoreCamelCase

    查看全部
  • spring官网文档:

    https://docs.spring.io/spring-framework/docs/

    查看全部
  • 更少的配置--别名

    查看全部
  • 天猫秒杀库存系统

    查看全部
  • 秒杀的难点是如何高效的处理竞争

    查看全部
  • 行级锁::

    查看全部
  • dao具体SQL实现

    查看全部

举报

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

微信扫码,参与3人拼团

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

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