From b50fa6f49eaa6bba873a4090f73e59714298c800 Mon Sep 17 00:00:00 2001 From: Su Sandi Ko <s202322014@ajou.ac.kr> Date: Wed, 26 Mar 2025 19:07:34 +0900 Subject: [PATCH] item repository --- .../java/com/example/demo/TestController.java | 12 +++++++ src/main/java/com/example/demo/UserDto.java | 11 +++++++ .../example/demo/constant/ItemSellStatus.java | 5 +++ .../java/com/example/demo/entity/Item.java | 33 +++++++++++++++++++ .../demo/repository/ItemRepository.java | 13 ++++++++ .../resources/application-test.properties | 6 ++++ src/main/resources/application.properties | 13 ++++++++ .../demo/repository/ItemRepositoryTest.java | 29 ++++++++++++++++ 8 files changed, 122 insertions(+) create mode 100644 src/main/java/com/example/demo/TestController.java create mode 100644 src/main/java/com/example/demo/UserDto.java create mode 100644 src/main/java/com/example/demo/constant/ItemSellStatus.java create mode 100644 src/main/java/com/example/demo/entity/Item.java create mode 100644 src/main/java/com/example/demo/repository/ItemRepository.java create mode 100644 src/main/resources/application-test.properties create mode 100644 src/test/java/com/example/demo/repository/ItemRepositoryTest.java diff --git a/src/main/java/com/example/demo/TestController.java b/src/main/java/com/example/demo/TestController.java new file mode 100644 index 0000000..fc0b76b --- /dev/null +++ b/src/main/java/com/example/demo/TestController.java @@ -0,0 +1,12 @@ +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/UserDto.java b/src/main/java/com/example/demo/UserDto.java new file mode 100644 index 0000000..818b64c --- /dev/null +++ b/src/main/java/com/example/demo/UserDto.java @@ -0,0 +1,11 @@ +package com.example.demo; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +@Getter +@Setter +@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/constant/ItemSellStatus.java b/src/main/java/com/example/demo/constant/ItemSellStatus.java new file mode 100644 index 0000000..4e2e5b2 --- /dev/null +++ b/src/main/java/com/example/demo/constant/ItemSellStatus.java @@ -0,0 +1,5 @@ +package com.example.demo.constant; + +public enum ItemSellStatus { + SELL, SOLD_OUT +} 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 0000000..5c433f0 --- /dev/null +++ b/src/main/java/com/example/demo/entity/Item.java @@ -0,0 +1,33 @@ +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/repository/ItemRepository.java b/src/main/java/com/example/demo/repository/ItemRepository.java new file mode 100644 index 0000000..c0d9053 --- /dev/null +++ b/src/main/java/com/example/demo/repository/ItemRepository.java @@ -0,0 +1,13 @@ +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>{ + + +} + diff --git a/src/main/resources/application-test.properties b/src/main/resources/application-test.properties new file mode 100644 index 0000000..4459764 --- /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 spring.jpa.properties.hibernate.show_sql = true \ No newline at end of file diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 4244cb3..9f08d1d 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,2 +1,15 @@ spring.application.name=demo server.port = 3000 +spring.jpa.hibernate.ddl-auto=update +spring.jpa.show-sql=true +spring.datasource.url=jdbc:mysql://localhost:3306/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=web1 +# 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 \ No newline at end of file diff --git a/src/test/java/com/example/demo/repository/ItemRepositoryTest.java b/src/test/java/com/example/demo/repository/ItemRepositoryTest.java new file mode 100644 index 0000000..bb4cd02 --- /dev/null +++ b/src/test/java/com/example/demo/repository/ItemRepositoryTest.java @@ -0,0 +1,29 @@ +package com.example.demo.repository; + +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.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; +@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()); + } +} \ No newline at end of file -- GitLab