package com.whn.hellospring; import com.whn.hellospring.mapper.CoffeeMapper; import com.whn.hellospring.model.CoffeeDO; import com.whn.hellospring.model.CoffeeOrderDO; import com.whn.hellospring.model.OrderState; import com.whn.hellospring.repository.CoffeeOrderRepository; import com.whn.hellospring.repository.CoffeeRepository; import com.whn.hellospring.service.CoffeeOrderService; import com.whn.hellospring.service.CoffeeService; import com.whn.hellospring.service.JuheService; import org.joda.money.CurrencyUnit; import org.joda.money.Money; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; import org.springframework.context.annotation.ComponentScan; import org.springframework.data.jpa.repository.config.EnableJpaRepositories; import org.springframework.transaction.annotation.EnableTransactionManagement; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import lombok.extern.slf4j.Slf4j; import redis.clients.jedis.Jedis; import java.util.List; import java.util.Optional; import java.util.stream.Collectors; @ComponentScan("com") @SpringBootApplication @RestController @Slf4j @EnableJpaRepositories @EnableTransactionManagement public class HelloSpringApplication extends SpringBootServletInitializer implements ApplicationRunner { @Autowired private CoffeeRepository coffeeRepository; @Autowired private CoffeeOrderRepository orderRepository; @Autowired private CoffeeMapper coffeeMapper; @Autowired private CoffeeService coffeeService; @Autowired private CoffeeOrderService orderService; @Autowired private JuheService juheService; public static void main(String[] args) { SpringApplication.run(HelloSpringApplication.class, args); } // 继承SpringBootServletInitializer 实现configure 方便打war 外部服务器部署。 @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(HelloSpringApplication.class); } @Transactional @Override public void run(ApplicationArguments args) throws Exception { // initOrders(); // findOrders(); // testMybatis(); // breakPage(); // bucks();//初步测试 // oil(); // testRedis(); } private void testRedis() { Jedis jedis = new Jedis("192.168.0.217"); jedis.auth("root");//加入这一段代码 System.out.println("Server is running: "+jedis.ping()); System.out.println("connection to server sucessfully"); jedis.set("title","hellword"); System.out.println(jedis.get("title")); } private void oil() { juheService.getOilPrice(); } private void bucks() { log.info("findAllCoffee{}",coffeeRepository.findAll()); Optional latte = coffeeService.findOneCoffee("Latte"); if (latte.isPresent()){ // CoffeeOrderDO order = orderService.createOrder( latte.get()); // log.info("update",orderService.updateState(order,OrderState.INIT)); // log.info("update",orderService.updateState(order,OrderState.PAID)); } } /** * 分页测试 * Mybatis PageHelper */ // private void breakPage() { // //第一页数据 // coffeeMapper.findAllWithRowBounds(new RowBounds(1,3)) // .forEach(c->log.info("page(1) Coffee{}",c)); // // //第二页数据 // coffeeMapper.findAllWithRowBounds(new RowBounds(2,3)) // .forEach(c->log.info("page(2) Coffee{}",c)); // // log.info("============================="); // // //page传递为0的时候会取出所有数据 // coffeeMapper.findAllWithRowBounds(new RowBounds(1,0)) // .forEach(c->log.info("Page(1) 所有数据 Coffee{}",c)); // // log.info("============================="); // // //使用参数来获取 // coffeeMapper.findAllWithParam(1,3) // .forEach(c->log.info("Page(1) 使用参数来获取3 Coffee{}",c)); // // // List list = coffeeMapper.findAllWithParam(2,3); // PageInfo page = new PageInfo<>(list); // log.info("page{}",page); // // } // private void testMybatis() { // Coffee c = Coffee.builder().name("espresso") // .price(Money.of(CurrencyUnit.of("CNY"),20.0)) // .build(); // // int count = coffeeMapper.save(c); // log.info("Save{} coffee:{}",count,c); // // c = Coffee.builder().name("latte") // .price(Money.of(CurrencyUnit.of("CNY"),25.0)) // .build(); // // count = coffeeMapper.save(c); // log.info("Save{} coffee:{}",count,c); // // c = coffeeMapper.findById(c.getId()); // log.info("find coffee:{}",c); // // } @RequestMapping("/hello") public String hello(){ return "hello spring"; } private void initOrders(){ //创建一杯咖啡 CoffeeDO espresso = CoffeeDO.builder().name("espresso") .price(Money.of(CurrencyUnit.of("CNY"),20.0)) .build(); coffeeRepository.save(espresso); log.info("Coffee:{}",espresso); //创建一杯咖啡 CoffeeDO latte = CoffeeDO.builder().name("latte") .price(Money.of(CurrencyUnit.of("CNY"),30.0)) .build(); coffeeRepository.save(latte); log.info("Coffee:{}",latte); //创建一个订单,包含一杯咖啡 CoffeeOrderDO order = CoffeeOrderDO.builder() .customer("Li Lei") // .items(Collections.singletonList(espresso)) .state(OrderState.INIT) .build(); orderRepository.save(order); log.info("Order:{}",order); //创建一个订单,包含两杯咖啡 order = CoffeeOrderDO.builder() .customer("Li Lei") // .items(Arrays.asList(espresso,latte)) .state(OrderState.INIT) .build(); orderRepository.save(order); log.info("Order:{}",order); //创建一个订单,包含两杯咖啡 order = CoffeeOrderDO.builder() .customer("Li Lei") // .items(Arrays.asList(espresso,latte)) .state(OrderState.INIT) .build(); orderRepository.save(order); log.info("Order:{}",order); //创建一个订单,包含两杯咖啡 order = CoffeeOrderDO.builder() .customer("Li Lei") // .items(Arrays.asList(espresso,latte)) .state(OrderState.INIT) .build(); orderRepository.save(order); log.info("Order:{}",order); } // private void findOrders(){ // //获取咖啡 // coffeeRepository // .findAll() // .forEach(c->log.info("Loading{}",c)); // // //获取前三,更新时间降序,ID升序 // List list = orderRepository.findTop3ByOrderByUpdateTimeDescIdAsc(); // log.info("findTop3ByOrderByUpdateTimeDescIdAsc:{}" ,getJoinedOrderId(list)); // // //获取Li Lei 的订单id // list = orderRepository.findByCustomerOrderById("Li Lei"); // log.info("findByCustomerOrderById:{}" ,getJoinedOrderId(list)); // // //列出订单,订单中的咖啡 // list.forEach(o->{ // log.info("Order{}",o.getId()); // o.getItems().forEach(i->log.info(" Item{}",i)); // }); // // //获取latte的咖啡列表 // list = orderRepository.findByItems_Name("latte"); // log.info("findByItems_Name:{}" ,getJoinedOrderId(list)); // } /** * 将列表中的id用,拼接 * @param list * @return */ private String getJoinedOrderId(List list) { return list.stream().map(o->o.getId().toString()) .collect(Collectors.joining(",")); } }