diff --git a/pom.xml b/pom.xml
index ee799c7c4b63ebad2676b8ae08b3e1d20b692441..54dac99a7e11de360e8cd0436113cc82538d19f8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -124,6 +124,8 @@
 		</dependency>
 
 
+		
+
 	</dependencies>
 
 	<build>
diff --git a/src/main/java/com/example/demo/DemoApplication.java b/src/main/java/com/example/demo/DemoApplication.java
index 15fe95c5afa37151c83a187bbe972a562a1fcea4..2139ef822df764d410229d731b5f839654927546 100644
--- a/src/main/java/com/example/demo/DemoApplication.java
+++ b/src/main/java/com/example/demo/DemoApplication.java
@@ -12,8 +12,5 @@ public class DemoApplication {
 	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 7b7fd4e44735a2a778a4f21402e2a791a83d13a8..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;
-
-    }
-    
-}
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..56d6a511907512f99ae66895415b381082dbe82d
--- /dev/null
+++ b/src/main/java/com/example/demo/constant/Role.java
@@ -0,0 +1,7 @@
+package com.example.demo.constant;
+
+public enum Role {
+
+    USER, ADMIN
+    
+}
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..e37471d6b76f85fc3706d464101cda82b602e16a
--- /dev/null
+++ b/src/main/java/com/example/demo/controller/TestController.java
@@ -0,0 +1,58 @@
+package com.example.demo.controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+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();
+
+    }
+
+    @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();
+
+    }
+}
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 985e316a35d988245330d6290c5f11664ac95365..0b6c75267113510ebdd9a53e34a57217aeef976b 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;
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..4366ea27b0fc8ccc5e74eeb0d2b1f914958cfe64
--- /dev/null
+++ b/src/main/java/com/example/demo/dto/MemberDto.java
@@ -0,0 +1,13 @@
+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..fa89b93f949fc47342b0e309eb894f841f421a14
--- /dev/null
+++ b/src/main/java/com/example/demo/entity/Member.java
@@ -0,0 +1,44 @@
+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;
+
+    }
+}
+
diff --git a/src/main/java/com/example/demo/repository/ItemRepository.java b/src/main/java/com/example/demo/repository/ItemRepository.java
index eb04281e543f0e8a281643c555eab5cc9a2ba03f..92955a7af3f564330bc8ec79c95b3b5a391b0709 100644
--- a/src/main/java/com/example/demo/repository/ItemRepository.java
+++ b/src/main/java/com/example/demo/repository/ItemRepository.java
@@ -15,4 +15,8 @@ public interface ItemRepository extends JpaRepository<Item, Long>{
     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..0e4e6500831d0a5e3c7aed22583b7e571cb082b7
--- /dev/null
+++ b/src/main/java/com/example/demo/repository/MemberRepository.java
@@ -0,0 +1,10 @@
+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..bb17a342a9ebcc54dace903c9726751ad7fc2fdb
--- /dev/null
+++ b/src/main/java/com/example/demo/service/MemberService.java
@@ -0,0 +1,40 @@
+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;
+     
+    }
+
+}
+
+
diff --git a/src/main/resources/static/index.html b/src/main/resources/static/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..8d5a599423158a82ae63466b3e981ce24df777d8
--- /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>
diff --git a/src/main/resources/static/product.html b/src/main/resources/static/product.html
new file mode 100644
index 0000000000000000000000000000000000000000..f413bc806e7dbe4ea17fffb2d978504abcbb4530
--- /dev/null
+++ b/src/main/resources/static/product.html
@@ -0,0 +1,42 @@
+<!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>
diff --git a/src/main/resources/static/product_list.html b/src/main/resources/static/product_list.html
new file mode 100644
index 0000000000000000000000000000000000000000..9db1b10db36b3341479bb093551e5c3a29e35dfe
--- /dev/null
+++ b/src/main/resources/static/product_list.html
@@ -0,0 +1,57 @@
+<!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 d082a18c8556d2c3608415391ee97bf3eb53db81..114bdd2f186b563454a005ebd8b4418dd8772158 100644
--- a/src/test/java/com/example/demo/repository/ItemRepositoryTest.java
+++ b/src/test/java/com/example/demo/repository/ItemRepositoryTest.java
@@ -26,6 +26,9 @@ public class ItemRepositoryTest {
     @Autowired
     ItemRepository itemRepository;
 
+    @PersistenceContext
+    EntityManager em;
+
     public void createItemList(){
 
         for(int i=1; i <=10; i++){
@@ -78,5 +81,33 @@ public class ItemRepositoryTest {
         }
     }
  
+    @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());
+        }
+    }
+
 }