-
## 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
查看全部 -
mvn创建的最后一个参数表示使用mvn的原型
webapp的原型来创建项目
查看全部 -
用Maven命令创建web项目
查看全部 -
MyBatis和HIBERNATE都是用来ORM映射的
MyBatis的特点:参数 + SQL = Entity/List (提供参数和SQL语句)
两种方式提供SQL:1、XML提供SQL (推荐) 2、注解提供SQL
如何DAO接口?
1、Mapper自动实现DAO接口 (推荐)
2、API编程方式实现DAO接口
查看全部 -
减库存和记录购买明细构成一个事务,事务机制依然是目前最可靠的落地方案
NoSQL对于事务的支持不是很好
查看全部 -
目录结构
查看全部 -
mapper写法
查看全部 -
配置全局属性:
使用jdbc的getGeneratedKeys 获取数据库自增主键
使用列别名替代列名,自动转换为entity里的属性 useColumnLabel
开启驼峰命名转换 mapUnderscoreCamelCase
查看全部 -
spring官网文档:
https://docs.spring.io/spring-framework/docs/
查看全部 -
更少的配置--别名
查看全部 -
天猫秒杀库存系统
查看全部 -
秒杀的难点是如何高效的处理竞争
查看全部 -
行级锁::
查看全部 -
dao具体SQL实现
查看全部
举报