diff --git a/src/main/java/com/example/demo/DemoApplication.java b/src/main/java/com/example/demo/DemoApplication.java
index 6b4380eb3c267a766d2bc289d0a07dae2baa8d49..7b86aaa3a77986aece873e73aade3f5266a4b29e 100644
--- a/src/main/java/com/example/demo/DemoApplication.java
+++ b/src/main/java/com/example/demo/DemoApplication.java
@@ -13,9 +13,5 @@ public class DemoApplication {
 		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 66d4c42be87805d060458e3382a9742600b13141..0000000000000000000000000000000000000000
--- a/src/main/java/com/example/demo/TestController.java
+++ /dev/null
@@ -1,20 +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/Role.java b/src/main/java/com/example/demo/constant/Role.java
new file mode 100644
index 0000000000000000000000000000000000000000..5ed27513c8f7567aa4753041206672c62392ba37
--- /dev/null
+++ b/src/main/java/com/example/demo/constant/Role.java
@@ -0,0 +1,5 @@
+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..234df2692a5ac77b3d43432bc30c3bcee2f1b627
--- /dev/null
+++ b/src/main/java/com/example/demo/controller/MemberController.java
@@ -0,0 +1,61 @@
+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;
+
+@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);
+
+    return "OK"; 
+    }
+}
\ No newline at end of file
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..cd7b1ea28d915fb3508ce3cd46ef12e43c8fd150
--- /dev/null
+++ b/src/main/java/com/example/demo/controller/TestController.java
@@ -0,0 +1,40 @@
+package com.example.demo.controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.google.gson.JsonArray;
+import com.google.gson.JsonObject;
+
+
+@RestController
+public class TestController{
+    @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 81%
rename from src/main/java/com/example/demo/UserDto.java
rename to src/main/java/com/example/demo/controller/UserDto.java
index 6c12f313bfd3611ef6acf905052b5cc9b208fc68..0d5311add371cd748b33bb2f11e5d63d0b1ad494 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;
@@ -12,4 +12,4 @@ 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..313190f38f66176ba891934d804cc0eec2196458
--- /dev/null
+++ b/src/main/java/com/example/demo/dto/MemberDto.java
@@ -0,0 +1,14 @@
+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;
+
+}
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..f962f8aebcfa20f8beb7fe1057d625326756b663
--- /dev/null
+++ b/src/main/java/com/example/demo/entity/Member.java
@@ -0,0 +1,43 @@
+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
index 082d2bc1ff65d9fcd889f64cc21e5e1f7d061225..6b88582977df53ac04a7cc3e9be962fd9d1fe2e9 100644
--- a/src/main/java/com/example/demo/repository/ItemRepository.java
+++ b/src/main/java/com/example/demo/repository/ItemRepository.java
@@ -9,6 +9,13 @@ import java.util.List;
 
 import com.example.demo.entity.Item;
 
+
 // @NoRepositoryBean
 public interface ItemRepository extends JpaRepository<Item, Long>{
-}
\ No newline at end of file
+    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/java/com/example/demo/repository/MemberRepository.java b/src/main/java/com/example/demo/repository/MemberRepository.java
new file mode 100644
index 0000000000000000000000000000000000000000..1782d1cb3a0a5310a88a323a8a9ad231a8796ab5
--- /dev/null
+++ b/src/main/java/com/example/demo/repository/MemberRepository.java
@@ -0,0 +1,9 @@
+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); 
+}
\ No newline at end of file
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..9112da00e2d81661fabbc93f40869bab88bf32f2
--- /dev/null
+++ b/src/main/java/com/example/demo/service/MemberService.java
@@ -0,0 +1,35 @@
+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);
+    }
+
+    private boolean validateDuplicatetMember(Member member){
+
+        Member findMember = memberRepository.findByEmail(member.getEmail());
+        if(findMember != null){
+            System.out.println("이미 가입된 회원입니다.");
+            return false;
+        }
+        return true;
+    }
+
+}
\ No newline at end of file
diff --git a/src/main/resources/static/index.html b/src/main/resources/static/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..2057e49d1bc462d2e59e52660b31fc1355c61b35
--- /dev/null
+++ b/src/main/resources/static/index.html
@@ -0,0 +1 @@
+<!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..cfd9d329f8cfa7bb7e1b2f5db2306d06c95c18f3
--- /dev/null
+++ b/src/main/resources/static/product.html
@@ -0,0 +1,51 @@
+<!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>
diff --git a/src/test/java/com/example/demo/repository/ItemRepositoryTest.java b/src/test/java/com/example/demo/repository/ItemRepositoryTest.java
index 6be9f5936d68e6f3981af07e6c8d77b4646ed210..e815234b69d1b10ac080d10a198eafe0d7079c31 100644
--- a/src/test/java/com/example/demo/repository/ItemRepositoryTest.java
+++ b/src/test/java/com/example/demo/repository/ItemRepositoryTest.java
@@ -6,6 +6,8 @@ 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 com.example.demo.entity.QItem;
 import org.junit.jupiter.api.DisplayName;
 import java.time.LocalDateTime;
 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@@ -26,20 +28,93 @@ 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());
+ @PersistenceContext
+ EntityManager em;
+
+ 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