1.4成功信息的展示
package cn.tedu.seckill.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.jt.common.pojo.Seckill;
import cn.tedu.seckill.service.SecService;
@RestController
@RequestMapping("/seckill/manage")
public class SecController {
@Autowired
private SecService secService;
//查询可以秒杀的所有商品list
@RequestMapping("list")
public List<Seckill> queryAllList(){
return secService.queryAllList();
}
//根据商品id值访问表格获取一个具体的商品信息
@RequestMapping("datail")
public Seckill queryOne(Integer seckillId){
return secService.queryOne(seckillId);
}
}
package cn.tedu.seckill.service;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.jt.common.pojo.Seckill;
import cn.tedu.seckill.mapper.SecMapper;
@Service
public class SecService {
@Autowired
private SecMapper secMapper;
public List<Seckill> queryAllList() {
return secMapper.selectAll();
}
public Seckill queryOne(Integer seckillId) {
return secMapper.selectOneById(seckillId);
}
}
package cn.tedu.seckill.mapper;
import java.util.List;
import com.jt.common.pojo.Seckill;
public interface SecMapper {
List<Seckill> selectAll();
Seckill selectOneById(Integer seckillId);
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.tedu.seckill.mapper.SecMapper">
<select id="selectAll" resultType="Seckill">
select * from seckill;
</select>
<select id="selectOneById" parameterType="int"
resultType="Seckill">
select * from seckill where seckill_id=#{seckillId};
</select>
</mapper>
package cn.tedu.seckill.config;
public class RabbitmqNameUtils {
public static final String queueName="seckillq";
public static final String exName="seckillEx";
public static final String routingKey="seckill";
}
package cn.tedu.seckill.config;
import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.DirectExchange;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* 扫描范围加载 在配置内容中准备多个
* 需要的bean对象
* @author 在路上
*
*/
@Configuration
public class SeckillConfig {
//内存的队列queue对象
@Bean
public Queue queue01(){
return new Queue(RabbitmqNameUtils.queueName, true, false, false,null);
}
//内存的交换机对象
@Bean
public DirectExchange ex01(){
return new DirectExchange(RabbitmqNameUtils.exName,
false, false,null);
}
//绑定关系对象
@Bean
public Binding bind01(){
//将seckill去 seckillex 绑定 seckill路由
return BindingBuilder.bind(queue01()).to(ex01()).with(RabbitmqNameUtils.routingKey);
}
}
package cn.tedu.rabbitmq.consumer;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
import cn.tedu.seckill.config.RabbitmqNameUtils;
@Component
public class Consumer01 {
/*
* 自动配置中实现了连接对象的创建
* @rabbitlister
* 生成一个内存中的消费对象,根据绑定队列名称
* 实现各种绑定的关系,自动从队列接受监听信息,转给
* 当前类的对象,实现对象调用consumer
*/
//编写消费的逻辑代码
@RabbitListener(queues=RabbitmqNameUtils.queueName)
public void consume(String msg){
//msg就是消息队列中保存的消息body
System.out.println("1"+msg);
}
}
秒杀数据
2.秒杀核心逻辑