[우아한테크코스] 3월 28일 TIL
오늘 배운 것
- spark JAVA
sparkJava
-
시작
spring으로 시작해서 build.gradle에compile "com.sparkjava:spark-core:2.9.3"
추가
나머지 파일 다 삭제 - get
public class HelloWorld { public static void main(String[] args) { get("/hello", (req, res) -> "Hello World"); } }
위와 같이 작성하면
http://localhost:4567/hello
로 접근 가능public class HelloWorld { public static void main(String[] args) { get("/hello", (req, res) -> "Hello: " + req.params(":name")); } }
위와 같이 작성하면 hello/hi url로 들어가면 Hello: hi 출력
return "Hello: " + req.queryParams("name") + "나이: " + req.queryParams("age");
위와 같이 작성하면
?name=hi&age=24
로 url 들어가면 이름 나이 출력 - post ```html
```java
post("/hello", (req, res) -> {
return "post Hello: " + req.queryParams("name") + "나이: " + req.queryParams("age");
});
get은 url에 ?name=~~ 와 같은 url을 입력해서 전달했다면,
post는 url에 노출하지 않고 서버에서 이동해서 보여주는 것
- template engine
동적으로 화면 만들기 위한 handlebar template engine 적용하기
html에서 문법은이름: <br> 나이:
위와 같이 mustache 처럼 적용할 수 있고
이를 java에서는 아래와 같이 rendering 하여 사용할 수 있다.post("/hello", (req, res) -> { Map<String, Object> model = new HashMap<>(); model.put("name", req.queryParams("name")); model.put("age", req.queryParams("age")); return render(model, "result.html"); }); public static String render(Map<String, Object> model, String templatePath) { return new HandlebarsTemplateEngine().render(new ModelAndView(model, templatePath)); }
- 여러 명의 사용자 관리하기
List<User> users = new ArrayList<>();
를 선언하고 add해가며 List를 렌더링하여 사용할 수 있다.
SQL 문제
- 200개 이상 팔린 상품명과 그 수량을 수량 기준 내림차순으로 보여주세요.
SELECT OrderDetails.ProductID AS "상품아이디", Products.ProductName AS "상품이름", SUM(OrderDetails.Quantity) AS "총수량" FROM OrderDetails INNER JOIN Products ON OrderDetails.ProductID = Products.ProductID GROUP BY OrderDetails.ProductID HAVING SUM(OrderDetails.Quantity) >= 200 ORDER BY SUM(OrderDetails.Quantity) DESC;
- 많이 주문한 순으로 고객 리스트(ID, 고객명)를 구해주세요. (고객별 구매한 물품 총 갯수)
SELECT customers.CustomerID AS "고객아이디", customers.CustomerName AS "고객이름", SUM(orderDetails.Quantity) AS "주문량" FROM Customers customers INNER JOIN Orders orders ON customers.CustomerID = orders.CustomerID INNER JOIN OrderDetails orderDetails ON orders.OrderID = orderDetails.OrderID GROUP BY customers.CustomerID ORDER BY SUM(orderDetails.Quantity) DESC;
- 많은 돈을 지출한 순으로 고객 리스트를 구해주세요.
SELECT customers.CustomerID AS "고객아이디", customers.CustomerName AS "고객이름", SUM(orderDetails.Quantity * products.Price) AS "지출금액" FROM Customers customers LEFT JOIN Orders orders ON customers.CustomerID = orders.CustomerID LEFT JOIN OrderDetails orderDetails ON orders.OrderID = orderDetails.OrderID LEFT JOIN Products products on products.ProductID = orderDetails.ProductID GROUP BY customers.CustomerID ORDER BY SUM(orderDetails.Quantity * products.Price) DESC;