From 27d176e041ed29a8757939a54fe96c0be12f7696 Mon Sep 17 00:00:00 2001
From: jhm991231 <jhm991231@ajou.ac.kr>
Date: Wed, 2 Apr 2025 17:21:38 +0900
Subject: [PATCH] =?UTF-8?q?=EC=A4=91=EA=B0=84=20commit?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .attach_pid45597                              |  0
 .../com/example/demo/DemoApplication.java     |  7 --
 .../java/com/example/demo/TestController.java | 17 ----
 .../demo/controller/TestController.java       | 27 ++++++
 .../demo/{ => controller}/UserDto.java        |  4 +-
 .../demo/repository/ItemRepository.java       |  9 ++
 src/main/resources/static/index.html          | 13 +++
 .../demo/repository/ItemRepositoryTest.java   | 95 ++++++++++++++++---
 8 files changed, 133 insertions(+), 39 deletions(-)
 create mode 100644 .attach_pid45597
 delete mode 100644 src/main/java/com/example/demo/TestController.java
 create mode 100644 src/main/java/com/example/demo/controller/TestController.java
 rename src/main/java/com/example/demo/{ => controller}/UserDto.java (82%)
 create mode 100644 src/main/resources/static/index.html

diff --git a/.attach_pid45597 b/.attach_pid45597
new file mode 100644
index 0000000..e69de29
diff --git a/src/main/java/com/example/demo/DemoApplication.java b/src/main/java/com/example/demo/DemoApplication.java
index 52d3d31..372f9ff 100644
--- a/src/main/java/com/example/demo/DemoApplication.java
+++ b/src/main/java/com/example/demo/DemoApplication.java
@@ -2,7 +2,6 @@ package com.example.demo;
 
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 @RestController
@@ -12,10 +11,4 @@ public class DemoApplication {
 	public static void main(String[] args) {
 		SpringApplication.run(DemoApplication.class, args);
 	}
-
-	@GetMapping(value = "/")
-	public String HelloWorld() {
-		return "Hello World";
-	}
-
 }
diff --git a/src/main/java/com/example/demo/TestController.java b/src/main/java/com/example/demo/TestController.java
deleted file mode 100644
index 954ca1b..0000000
--- a/src/main/java/com/example/demo/TestController.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.example.demo;
-
-import org.springframework.web.bind.annotation.RestController;
-import org.springframework.web.bind.annotation.GetMapping;
-
-@RestController
-public class TestController {
-
-    @GetMapping(value = "/test")
-    public UserDto test() {
-        UserDto dto = new UserDto();
-        dto.setAge(17);
-        dto.setName("Jane");
-
-        return dto;
-    }
-}
diff --git a/src/main/java/com/example/demo/controller/TestController.java b/src/main/java/com/example/demo/controller/TestController.java
new file mode 100644
index 0000000..d8186a6
--- /dev/null
+++ b/src/main/java/com/example/demo/controller/TestController.java
@@ -0,0 +1,27 @@
+package com.example.demo.controller;
+
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.google.gson.JsonObject;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+
+@RestController
+public class TestController {
+    @RequestMapping(value = "/test", method = RequestMethod.GET)
+    public String test(@RequestParam("id") String id) {
+
+        JsonObject obj = new JsonObject();
+        obj.addProperty("title", "신사와 아가씨");
+        obj.addProperty("content", "로맨틱 코미디");
+
+        JsonObject data = new JsonObject();
+        data.addProperty("time", "토일 8시");
+        obj.add("data", data);
+
+        return obj.toString();
+    }
+}
diff --git a/src/main/java/com/example/demo/UserDto.java b/src/main/java/com/example/demo/controller/UserDto.java
similarity index 82%
rename from src/main/java/com/example/demo/UserDto.java
rename to src/main/java/com/example/demo/controller/UserDto.java
index 6f15f7c..002b816 100644
--- a/src/main/java/com/example/demo/UserDto.java
+++ b/src/main/java/com/example/demo/controller/UserDto.java
@@ -1,4 +1,4 @@
-package com.example.demo;
+package com.example.demo.controller;
 
 import lombok.Getter;
 import lombok.Setter;
@@ -8,8 +8,6 @@ import lombok.ToString;
 @Setter
 @ToString
 public class UserDto {
-
     private String name;
     private Integer age;
-
 }
diff --git a/src/main/java/com/example/demo/repository/ItemRepository.java b/src/main/java/com/example/demo/repository/ItemRepository.java
index e456d07..3b79411 100644
--- a/src/main/java/com/example/demo/repository/ItemRepository.java
+++ b/src/main/java/com/example/demo/repository/ItemRepository.java
@@ -11,5 +11,14 @@ import com.example.demo.entity.Item;
 
 // @NoRepositoryBean
 public interface ItemRepository extends JpaRepository<Item, Long> {
+    List<Item> findByItemNm(String itemNm);
 
+    List<Item> findByItemNmOrItemDetail(String itemNm, String itemDetail);
+
+    List<Item> findByPriceLessThan(Integer price);
+
+    List<Item> findByPriceLessThanOrderByPriceDesc(Integer price);
+
+    @Query("select i from Item i where i.itemDetail like %:itemDetail% order by i.price desc")
+    List<Item> findByItemDetail(@Param("itemDetail") String itemDetail);
 }
diff --git a/src/main/resources/static/index.html b/src/main/resources/static/index.html
new file mode 100644
index 0000000..782da65
--- /dev/null
+++ b/src/main/resources/static/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title>example 1-2</title>
+    </head>
+
+    <body>
+        <H2>example 1-2</H2>
+        <HR>
+            example 1-2
+    </body>
+</html>
diff --git a/src/test/java/com/example/demo/repository/ItemRepositoryTest.java b/src/test/java/com/example/demo/repository/ItemRepositoryTest.java
index 6b88fb4..5573c4f 100644
--- a/src/test/java/com/example/demo/repository/ItemRepositoryTest.java
+++ b/src/test/java/com/example/demo/repository/ItemRepositoryTest.java
@@ -26,19 +26,90 @@ public class ItemRepositoryTest {
     @Autowired
     ItemRepository itemRepository;
 
+    @PersistenceContext
+    EntityManager em;
+
+    public void createItemList() {
+        for (int i = 1; i <= 10; i++) {
+            Item item = new Item();
+            item.setItemNm("테스트 상품");
+            item.setPrice(100000);
+            item.setItemDetail("테스트 상품 상세 설명");
+            item.setStockNumber(100);
+            item.setRegTime(LocalDateTime.now());
+            item.setUpdateTime(LocalDateTime.now());
+            Item savedItem = itemRepository.save(item);
+        }
+    }
+
+    @Test
+    @DisplayName("상품명 조회 테스트")
+    public void findByItemNmTest() {
+        this.createItemList();
+        List<Item> itemList = itemRepository.findByItemNm("테스트 상품1");
+
+        for (Item item : itemList) {
+            System.out.println(item.toString());
+        }
+    }
+
+    @Test
+    @DisplayName("상품명, 상품상세 설명 OR 테스트")
+    public void findByItemNmOrItemDetailTest() {
+        this.createItemList();
+        List<Item> itemList = itemRepository.findByItemNm("테스트 상품1");
+
+        for (Item item : itemList) {
+            System.out.println(item.toString());
+        }
+    }
+
+    @Test
+    @DisplayName("가격 LessThan 테스트")
+    public void findByPriceLessThanTest() {
+        this.createItemList();
+        List<Item> itemList = itemRepository.findByPriceLessThan(10005);
+
+        for (Item item : itemList) {
+            System.out.println(item.toString());
+        }
+    }
+
+    @Test
+    @DisplayName("가격 내림차순 조회 테스트")
+    public void findByPriceLessThanOrderByPriceDesc() {
+        this.createItemList();
+        List<Item> itemList = itemRepository.findByPriceLessThanOrderByPriceDesc(10005);
+
+        for (Item item : itemList) {
+            System.out.println(item.toString());
+        }
+    }
+
     @Test
-    @DisplayName("상품 저장 테스트")
-    public void createItemTest() {
-        Item item = new Item();
-        item.setItemNm("테스트 상품");
-        item.setPrice(100000);
-        item.setItemDetail("테스트 상품 상세 설명");
-        item.setStockNumber(100);
-        item.setRegTime(LocalDateTime.now());
-        item.setUpdateTime(LocalDateTime.now());
-
-        Item savedItem = itemRepository.save(item);
-        System.out.println(savedItem.toString());
+    @DisplayName("@Query를 이용한 상품 조회 테스트")
+    public void findByItemDetailTest() {
+        this.createItemList();
+        List<Item> itemList = itemRepository.findByItemDetail("테스트 상품 상세 설명");
+
+        for (Item item : itemList) {
+            System.out.println(item.toString());
+        }
     }
 
+    @Test
+    @DisplayName("Querydsl 조회테스트1")
+    public void queryDslTest() {
+        this.createItemList();
+        JPAQueryFactory queryFactory = new JPAQueryFactory(em);
+        QItem qItem = QItem.item;
+        JPAQuery<Item> query = queryFactory.selectFrom(qItem).where(qItem.itemSellStatus.eq(ItemSellStatus.SELL))
+                .where(qItem.itemDetail.like("%" + "테스트 상품 상세 설명" + "%")).orderBy(qItem.price.desc());
+
+        List<Item> itemList = query.fetch();
+
+        for (Item item : itemList) {
+            System.out.println(item.toString());
+        }
+    }
 }
-- 
GitLab