diff --git a/pom.xml b/pom.xml index 3fda6c5466faf2eeae6a33ee5b8b1f8a106cb94d..16a53ce9793a0f0802dcad5a5a1c2dd315af8035 100644 --- a/pom.xml +++ b/pom.xml @@ -31,7 +31,6 @@ <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> - <scope>test</scope> </dependency> <dependency> @@ -123,6 +122,30 @@ <version>3.0.1</version> </dependency> + <dependency> + <groupId> com.querydsl</groupId> + <artifactId>querydsl-jpa</artifactId> + <version>5.0.0</version> + </dependency> + + <dependency> + <groupId>com.querydsl</groupId> + <artifactId>querydsl-apt</artifactId> + <version>5.0.0</version> + </dependency> + + <dependency> + <groupId>org.webjars</groupId> + <artifactId>jquery</artifactId> + <version>3.6.0</version> + </dependency> + + <dependency> + <groupId>org.webjars</groupId> + <artifactId>bootstrap</artifactId> + <version>5.1.3</version> + </dependency> + </dependencies> diff --git a/src/main/java/com/example/demo/DemoApplication.java b/src/main/java/com/example/demo/DemoApplication.java index 7bce9f6938786b58323edbbc98dc06ad154cd372..6ba99fd46371719459682857b35d8ef5027838cc 100644 --- a/src/main/java/com/example/demo/DemoApplication.java +++ b/src/main/java/com/example/demo/DemoApplication.java @@ -1,16 +1,19 @@ 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 @SpringBootApplication public class DemoApplication { -public static void main(String[] args) { -SpringApplication.run(DemoApplication.class, args); -} -@GetMapping(value="/") -public String HelloWorld(){ -return "Hello World"; -} + public static void main(String[] args) { + SpringApplication.run(DemoApplication.class, args); + } + + // @GetMapping(value = "/") + // public String HelloWorld() { + // return "Hello World"; + // } } \ No newline at end of file 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 67f9eaf733ac84bbd94d7c60a6d32fb19cdc2aa8..0000000000000000000000000000000000000000 --- 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.GetMapping; -import org.springframework.web.bind.annotation.RestController; - -@RestController -public class TestController { - - @GetMapping(value = "/test") - public UserDto test(){ - UserDto dto = new UserDto(); - dto.setAge(17); - dto.setName("Jane"); - - return dto; - } -} \ No newline at end of file diff --git a/src/main/java/com/example/demo/constant/ItemSellStatus.java b/src/main/java/com/example/demo/constant/ItemSellStatus.java new file mode 100644 index 0000000000000000000000000000000000000000..5b7bae398b965e2cc69fbab3dce3ad95efebcd01 --- /dev/null +++ b/src/main/java/com/example/demo/constant/ItemSellStatus.java @@ -0,0 +1,7 @@ +package com.example.demo.constant; + +public enum ItemSellStatus { + + SELL, SOLD_OUT +} + diff --git a/src/main/java/com/example/demo/constant/Role.java b/src/main/java/com/example/demo/constant/Role.java new file mode 100644 index 0000000000000000000000000000000000000000..bdabe17b1ffac140a5ea82b4f6aaceb6345f8d94 --- /dev/null +++ b/src/main/java/com/example/demo/constant/Role.java @@ -0,0 +1,6 @@ +package com.example.demo.constant; + +public enum Role { + + USER, ADMIN +} diff --git a/src/main/java/com/example/demo/controller/MemberController.java b/src/main/java/com/example/demo/controller/MemberController.java new file mode 100644 index 0000000000000000000000000000000000000000..ab2c9c93babda49b47fe6d31dc0dc5bfe05b4984 --- /dev/null +++ b/src/main/java/com/example/demo/controller/MemberController.java @@ -0,0 +1,70 @@ +package com.example.demo.controller; + +import com.example.demo.service.MemberService; +import com.example.demo.entity.Member; +import com.example.demo.dto.MemberDto; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.repository.query.Param; +import org.springframework.web.bind.annotation.*; +import com.google.gson.JsonParser; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.example.demo.constant.Role; + +@RestController +public class MemberController { + @Autowired + MemberService memberService; + + public Member createMember() { + MemberDto memberDto = new MemberDto(); + memberDto.setEmail("test@email.com"); + memberDto.setName("홍길동"); + memberDto.setAddress("서울시 마포구 합정동"); + memberDto.setPassword("1234"); + return Member.createMember(memberDto); + } + + @RequestMapping(value = "/membertest", method = RequestMethod.GET) + public void membertest() { + Member member = createMember(); + Member savedMember = memberService.saveMember(member); + System.out.println(member); + System.out.println(savedMember); + } + + @RequestMapping(value = "/makeMember", method = RequestMethod.POST) + public String makeMember(@RequestBody String param) { + + System.out.println(param); + JsonElement element = JsonParser.parseString(param); + JsonObject object = element.getAsJsonObject(); + + String id = object.get("id").getAsString(); + System.out.println("id : " + id); + + String email = object.get("email").getAsString(); + System.out.println("email : " + email); + + String address = object.get("address").getAsString(); + System.out.println("address : " + address); + + String name = object.get("name").getAsString(); + System.out.println("name : " + name); + + String password = object.get("password").getAsString(); + System.out.println("password : " + password); + + Member member = new Member(); + member.setName(name); + member.setEmail(email); + member.setAddress(address); + member.setPassword(password); + member.setRole(Role.USER); + + memberService.saveMember(member); + + return "OK"; + + } +} 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 0000000000000000000000000000000000000000..2a1728aa4bae921e340767097519e3b08b82bb94 --- /dev/null +++ b/src/main/java/com/example/demo/controller/TestController.java @@ -0,0 +1,61 @@ +package com.example.demo.controller; + +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; + +@RestController +public class TestController { + + @RequestMapping(value = "/test", method = RequestMethod.GET) + public String test(@RequestParam("id") String id) { + + JsonObject obj = new JsonObject(); + obj.addProperty("item_nm", "수제 햄버거"); + obj.addProperty("item_detail", "소고시 패티와 토마토가 들어 있는 햄버거"); + + + obj.addProperty("item_reg_date", "2022/04/22"); + obj.addProperty("item_price", "4000"); + + return obj.toString(); + } + + // @GetMapping(value = "/test") + // public UserDto test(){ + + // UserDto dto = new UserDto(); + // dto.setAge(17); + // dto.setName("Jane"); + + // return dto; + // } + + @RequestMapping(value = "/productlist", method = RequestMethod.GET) + public String productList(){ + JsonObject obj1 = new JsonObject(); + obj1.addProperty("item_nm", "수제 햄버거"); + obj1.addProperty("item_detail", "소고기 패티와 토마토가 들어 있는 햄버거"); + obj1.addProperty("item_reg_date", "2022/04/22"); + obj1.addProperty("item_price", "4000"); + JsonObject obj2 = new JsonObject(); + obj2.addProperty("item_nm", "카레라이스"); + obj2.addProperty("item_detail", "매운 3 분 카레라이스"); + obj2.addProperty("item_reg_date", "2022/03/10"); + obj2.addProperty("item_price", "8000"); + JsonObject obj3 = new JsonObject(); + obj3.addProperty("item_nm", "라면"); + obj3.addProperty("item_detail", "소고기 라면"); + obj3.addProperty("item_reg_date", "2021/09/10"); + obj3.addProperty("item_price", "1500"); + JsonArray infoArray = new JsonArray(); + infoArray.add(obj1); + infoArray.add(obj2); + infoArray.add(obj3); + return infoArray.toString(); + } +} \ No newline at end of file diff --git a/src/main/java/com/example/demo/UserDto.java b/src/main/java/com/example/demo/controller/UserDto.java similarity index 80% rename from src/main/java/com/example/demo/UserDto.java rename to src/main/java/com/example/demo/controller/UserDto.java index 6dceacda2818a8f5b832e76ec43cd920609b0988..40235c9572bbbb91d257f5e57a2f6331cee668b1 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; @@ -10,4 +10,5 @@ import lombok.ToString; public class UserDto { private String name; private Integer age; -} \ No newline at end of file +} + diff --git a/src/main/java/com/example/demo/dto/MemberDto.java b/src/main/java/com/example/demo/dto/MemberDto.java new file mode 100644 index 0000000000000000000000000000000000000000..5441cd252f1fdc2fa57f730273a9cb93fd5b90e8 --- /dev/null +++ b/src/main/java/com/example/demo/dto/MemberDto.java @@ -0,0 +1,16 @@ +package com.example.demo.dto; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter + +public class MemberDto { + + private String name; + private String email; + private String password; + private String address; + +} \ No newline at end of file diff --git a/src/main/java/com/example/demo/entity/Item.java b/src/main/java/com/example/demo/entity/Item.java new file mode 100644 index 0000000000000000000000000000000000000000..0e4ee2b3defd47ea3bb482e30123a8e586e9a2e8 --- /dev/null +++ b/src/main/java/com/example/demo/entity/Item.java @@ -0,0 +1,41 @@ +package com.example.demo.entity; + +import com.example.demo.constant.ItemSellStatus; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import java.time.LocalDateTime; +import javax.persistence.*; +import org.springframework.stereotype.Component; + +@Table(name = "item") +@Getter +@Setter +@ToString +@Entity +public class Item { + @Id + @Column(name = "item_id") + @GeneratedValue(strategy = GenerationType.AUTO) + private Long id; + + @Column(nullable = false, length = 50) + private String itemNm; + + @Column(name = "price", nullable = false) + private int price; + + @Column(nullable = false) + private int stockNumber; + + @Lob + @Column(nullable = false) + + private String itemDetail; + @Enumerated(EnumType.STRING) + private ItemSellStatus itemSellStatus; + + private LocalDateTime regTime; + private LocalDateTime updateTime; + +} \ No newline at end of file diff --git a/src/main/java/com/example/demo/entity/Member.java b/src/main/java/com/example/demo/entity/Member.java new file mode 100644 index 0000000000000000000000000000000000000000..ca43ca35e3eb4bdb4d5412031ee2e561aec1e86a --- /dev/null +++ b/src/main/java/com/example/demo/entity/Member.java @@ -0,0 +1,37 @@ +package com.example.demo.entity; + +import javax.persistence.*; +import com.example.demo.dto.MemberDto; +import com.example.demo.constant.Role; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +@Entity +@Table(name = "member") +@Getter +@Setter +@ToString +public class Member { + @Id + @Column(name = "member_id") + @GeneratedValue(strategy = GenerationType.AUTO) + private Long id; + private String name; + @Column(unique = true) + private String email; + private String password; + private String address; + @Enumerated(EnumType.STRING) + private Role role; + + public static Member createMember(MemberDto memberDto){ + Member member = new Member(); + member.setName(memberDto.getName()); + member.setEmail((memberDto.getEmail())); + member.setAddress((memberDto.getAddress())); + member.setPassword(memberDto.getPassword()); + member.setRole(Role.USER); + return member; + } +} \ No newline at end of file diff --git a/src/main/java/com/example/demo/repository/ItemRepository.java b/src/main/java/com/example/demo/repository/ItemRepository.java new file mode 100644 index 0000000000000000000000000000000000000000..171a97ab81bff85e0fc2fe4cd7c83ae825166d14 --- /dev/null +++ b/src/main/java/com/example/demo/repository/ItemRepository.java @@ -0,0 +1,17 @@ +package com.example.demo.repository; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.repository.NoRepositoryBean; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; +import java.util.List; +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); + +} \ No newline at end of file diff --git a/src/main/java/com/example/demo/repository/MemberRepository.java b/src/main/java/com/example/demo/repository/MemberRepository.java new file mode 100644 index 0000000000000000000000000000000000000000..b7bf0129719050b1ca2bad4a21e46317bacbf06b --- /dev/null +++ b/src/main/java/com/example/demo/repository/MemberRepository.java @@ -0,0 +1,7 @@ +package com.example.demo.repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import com.example.demo.entity.*; +public interface MemberRepository extends JpaRepository<Member, Long>{ +Member findByEmail(String email); +} diff --git a/src/main/java/com/example/demo/service/MemberService.java b/src/main/java/com/example/demo/service/MemberService.java new file mode 100644 index 0000000000000000000000000000000000000000..9ce3978e5fd0ed5a289cc903e9a7469715e41c13 --- /dev/null +++ b/src/main/java/com/example/demo/service/MemberService.java @@ -0,0 +1,32 @@ +package com.example.demo.service; + +import com.example.demo.entity.Member; +import com.example.demo.repository.MemberRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; +import javax.transaction.Transactional; + +@Service +@Transactional +@RequiredArgsConstructor +public class MemberService { + private final MemberRepository memberRepository; + + public Member saveMember(Member member) { + validateDuplicatetMember(member); + return memberRepository.save(member); + } + + @Async + private boolean validateDuplicatetMember(Member member) { + synchronized (memberRepository) { + Member findMember = memberRepository.findByEmail(member.getEmail()); + if (findMember != null) { + System.out.println("이미 가입된 회원입니다."); + return false; + } + return true; + } + } +} diff --git a/src/main/resources/application-test.properties b/src/main/resources/application-test.properties new file mode 100644 index 0000000000000000000000000000000000000000..a269cca34f2d5daebbf203ef8cf945c498f9b9fe --- /dev/null +++ b/src/main/resources/application-test.properties @@ -0,0 +1,6 @@ +spring.datasource.driver-class-name=org.h2.Driver +spring.datasource.url=jdbc:h2:mem:test +spring.datasource.username=sa +spring.datasource.password= +spring.jpa.database-platform=org.hibernate.dialect.H2Dialect +spring.jpa.hibernate.ddl-auto=create \ No newline at end of file diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 8b137891791fe96927ad78e64b0aad7bded08bdc..890eeaac79613edc3acc25a8a48838d8b82871c4 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1 +1,17 @@ - +server.port = 8098 +spring.jpa.hibernate.ddl-auto=update +spring.jpa.show-sql=true +spring.datasource.url=jdbc:mysql://210.107.196.163:40498/shop?useSSL=false&useUnicode=true&serverTimezone=Asia/Seoul +spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver +spring.datasource.username=root +spring.datasource.password=minkyungjae0524 +# spring.datasource.driver-class-name=org.h2.Driver +# spring.datasource.url=jdbc:h2:mem:test +# spring.datasource.username=sa +# spring.datasource.password= +# spring.jpa.database-platform=org.hibernate.dialect.H2Dialect +# spring.jpa.hibernate.ddl-auto=create +spring.jpa.properties.hibernate.show_sql = true +spring.jpa.properties.hibernate.connection.autocommit = true +spring.jpa.properties.hibernate.format_sql = true +logging.level.org.hibernate.type.descriptor.sql = trace diff --git a/src/main/resources/static/index.html b/src/main/resources/static/index.html new file mode 100644 index 0000000000000000000000000000000000000000..b81b57b802c08dde03b57bf4bdb0a29a7bc0f8e1 --- /dev/null +++ b/src/main/resources/static/index.html @@ -0,0 +1,41 @@ +<!DOCTYPE html> +<html> + <head> + <meta charset="utf-8"> + <title>Insert title here</title> + <link rel="stylesheet" + href="/webjars/bootstrap/5.1.3/css/bootstrap.min.css"> + <script src="/webjars/jquery/3.6.0/jquery.min.js"></script> + <script src="/webjars/popper.js/2.9.3/umd/popper.min.js"></script> + <script + src="/webjars/bootstrap/5.1.3/js/bootstrap.min.js"></script> + </head> + <body> + <div class="container"> + <table class="table table-hover"> + <thead class="thead-dark"> + <tr> + <th>codeId</th> + <th>code</th> + <th>codeNm</th> + <th>codeDc</th> + </tr> + </thead> + <tbody> + <tr> + <td>COM001</td> + <td>REG01</td> + <td>단일 게시판 이용 등록</td> + <td>단일 게시판 이용 등록</td> + </tr> + <tr> + <td>COM001</td> + <td>REG02</td> + <td>커뮤니티 등록</td> + <td>커뮤니티 등록</td> + </tr> + </tbody> + </table> + </div> + </body> + </html> \ No newline at end of file diff --git a/src/main/resources/static/product.html b/src/main/resources/static/product.html new file mode 100644 index 0000000000000000000000000000000000000000..f2dbfd276d64f542b4e1b748a11411d3c8013a56 --- /dev/null +++ b/src/main/resources/static/product.html @@ -0,0 +1,39 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <meta charset="UTF-8"> + <title>Product</title> + <link rel="stylesheet" +href="/webjars/bootstrap/5.1.3/css/bootstrap.min.css"> + <script src="/webjars/jquery/3.6.0/jquery.min.js"></script> + <script +src="/webjars/popper.js/2.9.3/umd/popper.min.js"></script> + <script +src="/webjars/bootstrap/5.1.3/js/bootstrap.min.js"></script> + <script> + $(document).ready(function(){ + $("button").click(function(){ + $.ajax({ + type: 'GET', + url: '/test?id=1', + success: function(data){ + var obj = JSON.parse(data); + $('#item_nm span').text(obj.item_nm) + $('#item_detail span').text(obj.item_detail) + $('#item_reg_date span').text(obj.item_reg_date) + $('#item_price span').text(obj.item_price) + } + }); + }); + }); + </script> +</head> +<body> + <h1>상품 데이터 출력 예제</h1> + <div id = "item_nm">상품명: <span></span></div> + <div id = "item_detail">상품 상세설명: <span></span></div> + <div id = "item_reg_date">상품 등록일: <span></span></div> + <div id = "item_price">삼품가격: <span></span></div> + <button>조회</button> +</body> +</html> \ No newline at end of file diff --git a/src/main/resources/static/product_list.html b/src/main/resources/static/product_list.html new file mode 100644 index 0000000000000000000000000000000000000000..117bd85c39910cf46aa03c9d48946a5e2ff23629 --- /dev/null +++ b/src/main/resources/static/product_list.html @@ -0,0 +1,54 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <meta charset="UTF-8"> + <title>Product</title> + <link rel="stylesheet" +href="/webjars/bootstrap/5.1.3/css/bootstrap.min.css"> + <script src="/webjars/jquery/3.6.0/jquery.min.js"></script> + <script +src="/webjars/popper.js/2.9.3/umd/popper.min.js"></script> + <script +src="/webjars/bootstrap/5.1.3/js/bootstrap.min.js"></script> + <script> + $(document).ready(function(){ + $("button").click(function(){ + $.ajax({ + type: 'GET', + url: '/productlist', + success: function(data){ + var array = JSON.parse(data); + for(i=0; i < array.length; i++){ + var obj = array[i]; +html = ''; +html += '<tr>'; + html += '<td>' + obj.item_nm + '</td>' + html += '<td>' + obj.item_detail + '</td>' +html += '<td>' + obj.item_reg_date + '</td>' +html += '<td>' + obj.item_price + '</td>' + html += '</tr>'; + $("#tableBody").append(html); + } + } + }); + }); + }); + </script> +</head> +<body> +<h1>상품 데이터 목록 출력</h1> +<button>조회</button> +<table class="table table-hover"> + <thead class="thead-dark"> + <tr> + <th>상품이름</th> + <th>상품상세설명</th> + <th>상품등록일</th> + <th>상품가격</th> + </tr> + </thead> + <tbody id="tableBody"> + </tbody> +</table> +</body> +</html> \ No newline at end of file diff --git a/src/test/java/com/example/demo/ItemRepositoryTest.java b/src/test/java/com/example/demo/ItemRepositoryTest.java new file mode 100644 index 0000000000000000000000000000000000000000..f0a984b6a55597f0fd803c71ec3f00995d3e4d9e --- /dev/null +++ b/src/test/java/com/example/demo/ItemRepositoryTest.java @@ -0,0 +1,118 @@ +package com.example.demo; + +import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.TestPropertySource; +import com.example.demo.entity.Item; +import com.example.demo.repository.ItemRepository; + +import com.example.demo.entity.QItem; +import org.junit.jupiter.api.DisplayName; +import java.time.LocalDateTime; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.junit.runner.RunWith; +import com.example.demo.constant.ItemSellStatus; +import java.util.List; +import com.querydsl.jpa.impl.JPAQueryFactory; +import com.querydsl.jpa.impl.JPAQuery; +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; + +@SpringBootTest +@TestPropertySource(locations = "classpath:application-test.properties") + +@RunWith(SpringJUnit4ClassRunner.class) +public class ItemRepositoryTest { + + @Autowired + ItemRepository itemRepository; + + @PersistenceContext + EntityManager em; + + @Test + @DisplayName("��ǰ ���� ��Ʈ") + public void createItemList() { + + for (int i = 1; i <= 10; i++) { + Item item = new Item(); + item.setItemNm(("��Ʈ ��ǰ") + i); + item.setPrice(10000 + i); + item.setItemDetail("��Ʈ ��ǰ �� ����" + i); + item.setItemSellStatus(ItemSellStatus.SELL); + 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.findByItemNmOrItemDetail("��Ʈ ��ǰ1","��Ʈ ��ǰ �� ����5"); + 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("@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()); + } + } +} \ No newline at end of file