diff --git a/pom.xml b/pom.xml
index ee799c7c4b63ebad2676b8ae08b3e1d20b692441..456d544ce0d4a71a7810ac9fbc72abb95401b741 100644
--- a/pom.xml
+++ b/pom.xml
@@ -28,6 +28,18 @@
 			<artifactId>spring-boot-starter-web</artifactId>
 		</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>
+		
 		<dependency>
 			<groupId>org.springframework.boot</groupId>
 			<artifactId>spring-boot-starter-test</artifactId>
@@ -79,6 +91,12 @@
 			<version>5.0.0</version>
 		</dependency>
 
+		<dependency>
+    <groupId>mysql</groupId>
+    <artifactId>mysql-connector-java</artifactId>
+    <scope>runtime</scope>
+</dependency>
+
 		<dependency>
 			<groupId>com.googlecode.json-simple</groupId>
 			<artifactId>json-simple</artifactId>
@@ -91,6 +109,19 @@
 			<version>2.9.0</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>
@@ -124,7 +155,13 @@
 		</dependency>
 
 
-	</dependencies>
+	
+   <dependency>
+     <groupId>org.assertj</groupId>
+     <artifactId>assertj-core</artifactId>
+     <version>3.13.2</version>
+   </dependency>
+ </dependencies>
 
 	<build>
 		<plugins>
@@ -158,6 +195,7 @@
 					</execution>
 				</executions>
 			</plugin>
+			
 		</plugins>
 	</build>
 
diff --git a/src/main/java/com/example/demo/DemoApplication.java b/src/main/java/com/example/demo/DemoApplication.java
index fbceb8e72653b7e7fd0cd3deb90ff32629fc36a4..71c3ca5096400bcb8b181b52e1e44a748a3b5c1c 100644
--- a/src/main/java/com/example/demo/DemoApplication.java
+++ b/src/main/java/com/example/demo/DemoApplication.java
@@ -1,21 +1,42 @@
 package com.example.demo;
 
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.CommandLineRunner;
 import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
+import
+org.springframework.boot.autoconfigure.SpringBootApplication;
+
+import org.springframework.boot.autoconfigure.domain.EntityScan;
+import org.springframework.context.ApplicationContext;
+import java.util.Arrays;
+import com.example.demo.entity.Item;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RestController;
-
-@SpringBootApplication
+import org.apache.ibatis.session.SqlSessionFactory;
+import org.mybatis.spring.SqlSessionFactoryBean;
+import org.springframework.context.annotation.Bean;
+import javax.sql.DataSource;
+//import org.springframework.core.io.support.PathMatchingResourcePatternReso
+import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
+import org.springframework.core.io.Resource;
 @RestController
-public class DemoApplication {
-
-	public static void main(String[] args) {
-		SpringApplication.run(DemoApplication.class, args);
-	}
-
-	@GetMapping(value="/")
-   public String HelloWorld(){
-      return "Hello World";
-   }
-
+@SpringBootApplication
+// @EntityScan(basePackageClasses = {Item.class})
+public class DemoApplication{// implements CommandLineRunner{
+// @Autowired
+// private ApplicationContext appContext;
+    public static void main(String[] args) {
+        SpringApplication.run(DemoApplication.class, args);
+}
+@Bean
+    public SqlSessionFactory sqlSessionFactory(DataSource
+dataSource) throws Exception {
+        SqlSessionFactoryBean sessionFactory = new
+SqlSessionFactoryBean();
+        sessionFactory.setDataSource(dataSource);
+        Resource[] res = new
+PathMatchingResourcePatternResolver().getResources("mapper/UserMapper.xml");
+sessionFactory.setMapperLocations(res);
+    return sessionFactory.getObject();
+}
 }
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 fc0b76bf627a49701c6c165ab5e8f41552799b27..0000000000000000000000000000000000000000
--- a/src/main/java/com/example/demo/TestController.java
+++ /dev/null
@@ -1,12 +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..ae889880fd5c34aa464e06814e1ecb5d64605680
--- /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..833a0a9eaccf166493624a8b17cee7b807fb0541
--- /dev/null
+++ b/src/main/java/com/example/demo/controller/MemberController.java
@@ -0,0 +1,68 @@
+package com.example.demo.controller;
+
+import com.example.demo.service.MemberService;
+import com.google.gson.JsonParser;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.example.demo.entity.Member;
+import com.example.demo.dto.MemberDto;
+import com.example.demo.constant.Role;
+import java.util.Map;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.repository.query.Param;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+public class MemberController {
+    private final MemberService memberService;
+
+    public MemberController(MemberService memberService) {
+        this.memberService = memberService;
+    }
+
+    private Member createMember() {
+        MemberDto memberDto = new MemberDto();
+        memberDto.setEmail("user" + System.currentTimeMillis() + "@email.com"); // Unique email
+        memberDto.setName("홍길동");
+        memberDto.setAddress("서울시 마포구 합정동");
+        memberDto.setPassword("1234");
+        return Member.createMember(memberDto);
+    }
+
+    @GetMapping("/membertest")
+    public ResponseEntity<Map<String, Object>> membertest() {
+        try {
+            Member member = createMember();
+            Member savedMember = memberService.saveMember(member);
+            return ResponseEntity.ok(Map.of("status", "success", "data", savedMember));
+        } catch (IllegalStateException e) {
+            return ResponseEntity.status(HttpStatus.CONFLICT)
+                    .body(Map.of("status", "error", "message", "이미 가입된 회원입니다."));
+        } catch (Exception e) {
+            return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
+                    .body(Map.of("status", "error", "message", "서버 오류가 발생했습니다."));
+        }
+    }
+
+    @PostMapping("/makeMember")
+    public ResponseEntity<Map<String, Object>> makeMember(@RequestBody MemberDto memberDto) {
+        try {
+            System.out.println("name: " + memberDto.getName());
+            System.out.println("email: " + memberDto.getEmail());
+            System.out.println("address: " + memberDto.getAddress());
+            System.out.println("password: " + memberDto.getPassword());
+            Member member = Member.createMember(memberDto);
+            Member savedMember = memberService.saveMember(member);
+            return ResponseEntity.ok(Map.of("status", "success", "message", "OK", "data", savedMember));
+        } catch (IllegalStateException e) {
+            return ResponseEntity.status(HttpStatus.CONFLICT)
+                .body(Map.of("status", "error", "message", "이미 가입된 회원입니다."));
+        } catch (Exception e) {
+            return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
+                .body(Map.of("status", "error", "message", "서버 오류가 발생했습니다."));
+        }
+    }
+}
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..52f0d5d67d867aa1e86525ed056be0e34a5b809e
--- /dev/null
+++ b/src/main/java/com/example/demo/controller/TestController.java
@@ -0,0 +1,38 @@
+package com.example.demo.controller;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+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.example.demo.UserDto;
+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/controller/UserController.java b/src/main/java/com/example/demo/controller/UserController.java
new file mode 100644
index 0000000000000000000000000000000000000000..7b8a5c372c0b0d4ef74fd88ec96cd6d53e809e7c
--- /dev/null
+++ b/src/main/java/com/example/demo/controller/UserController.java
@@ -0,0 +1,30 @@
+package com.example.demo.controller;
+
+import java.util.List;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+import com.example.demo.dao.UserDAO;
+import com.example.demo.dto.UserDTO;
+
+@RestController
+@MapperScan(basePackages = "com.example.demo.dao") // 탐색할 패키시 설정
+public class UserController {
+    @Autowired
+    private UserDAO userDAO;// UserDAO bean 을 자동으로 주입
+
+    @RequestMapping("/users")
+    public List<UserDTO> users(@RequestParam(value = "country", defaultValue = "") String country) throws Exception { // query
+                                                                                                                      // String
+                                                                                                                      // 으로
+                                                                                                                      // country
+                                                                                                                      // 를
+                                                                                                                      // 받도록
+                                                                                                                      // 설정
+        final UserDTO param = new UserDTO(0, null, country);
+        final List<UserDTO> userList = userDAO.selectUsers(param);
+        return userList;
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/com/example/demo/dao/UserDAO.java b/src/main/java/com/example/demo/dao/UserDAO.java
new file mode 100644
index 0000000000000000000000000000000000000000..b0912207a95202a79cbd78bb156b8543a57ff451
--- /dev/null
+++ b/src/main/java/com/example/demo/dao/UserDAO.java
@@ -0,0 +1,6 @@
+package com.example.demo.dao;
+import java.util.List;
+import com.example.demo.dto.UserDTO;
+public interface UserDAO {
+List<UserDTO> selectUsers(UserDTO param) throws Exception;
+}
\ 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/dto/UserDTO.java b/src/main/java/com/example/demo/dto/UserDTO.java
new file mode 100644
index 0000000000000000000000000000000000000000..5b8b4f9745780b6c3bf0466121bf585579fc838a
--- /dev/null
+++ b/src/main/java/com/example/demo/dto/UserDTO.java
@@ -0,0 +1,16 @@
+package com.example.demo.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Getter
+@Setter
+@NoArgsConstructor // Add no-args constructor for MyBatis
+@AllArgsConstructor
+public class UserDTO {
+    private int seq;
+    private String name;
+    private String country;
+}
\ 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
index 5c433f0670d909c63e670f20fc5b966f583f54f2..13bc38c565ded8ef47858f8f04402707a3769384 100644
--- a/src/main/java/com/example/demo/entity/Item.java
+++ b/src/main/java/com/example/demo/entity/Item.java
@@ -1,4 +1,5 @@
 package com.example.demo.entity;
+
 import com.example.demo.constant.ItemSellStatus;
 import lombok.Getter;
 import lombok.Setter;
@@ -7,26 +8,26 @@ import java.time.LocalDateTime;
 import javax.persistence.*;
 import org.springframework.stereotype.Component;
 
-@Table(name="item")
+@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)
+    @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;
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..7492a0e9d332fb195f1d5353353082ca266f7d4b
--- /dev/null
+++ b/src/main/java/com/example/demo/entity/Member.java
@@ -0,0 +1,38 @@
+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 c0d90533ebb88b8d52eaa95d715d4dfdccdaca59..41b0f6316f92e95ba113f4283b86f2c8e5ddb593 100644
--- a/src/main/java/com/example/demo/repository/ItemRepository.java
+++ b/src/main/java/com/example/demo/repository/ItemRepository.java
@@ -7,7 +7,11 @@ 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);
+    @Query("select i from Item i where i.itemDetail like concat('%', :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..18dfe8bd7ba83dad8dd286ab4ade0ca1cc799651
--- /dev/null
+++ b/src/main/java/com/example/demo/repository/MemberRepository.java
@@ -0,0 +1,8 @@
+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..8f252457be8b7933d9a14cd4d6a569dcdd84507b
--- /dev/null
+++ b/src/main/java/com/example/demo/service/MemberService.java
@@ -0,0 +1,27 @@
+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) {
+        if (!validateDuplicatetMember(member)) {
+            throw new IllegalStateException("이미 가입된 회원입니다.");
+        }
+        return memberRepository.save(member);
+    }
+
+    private boolean validateDuplicatetMember(Member member) {
+        Member findMember = memberRepository.findByEmail(member.getEmail());
+        return findMember == null;
+    }
+}
\ No newline at end of file
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index 9f08d1d929b12901ee9b76fa59474df96b011e5d..0d6bd92bc5cbb2ea8f2ee59ac3cfda170e5c3122 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -7,9 +7,12 @@ 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.url=jdbc:h2:mem:testdb
 # 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
+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/main/resources/mapper/UserMapper.xml b/src/main/resources/mapper/UserMapper.xml
new file mode 100644
index 0000000000000000000000000000000000000000..34c66f2a549d60987ec0162356a55cd78314b760
--- /dev/null
+++ b/src/main/resources/mapper/UserMapper.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.example.demo.dao.UserDAO"><!--namespace 를 통해 UserDAO 와 연결합니다. -->
+  <select id="selectUsers"
+parameterType="com.example.demo.dto.UserDTO"
+resultType="com.example.demo.dto.UserDTO">
+SELECT `seq`, `name`, `country` FROM lab03
+<if test='country != null and country != ""'> WHERE country = #{country}
+    </if>
+  </select>
+</mapper>
\ 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..483e0cc8b992c8f57c7378db357be9071f427086
--- /dev/null
+++ b/src/main/resources/static/index.html
@@ -0,0 +1,42 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+  <title>Test Webjars</title>
+  <link rel="stylesheet" href="/app/s202322014/code/proxy/3000/webjars/bootstrap/5.1.3/css/bootstrap.min.css">
+  <script src="/app/s202322014/code/proxy/3000/webjars/jquery/3.6.0/jquery.min.js"></script>
+  <script src="/app/s202322014/code/proxy/3000/webjars/popper.js/2.9.3/umd/popper.min.js"></script>
+  <script src="/app/s202322014/code/proxy/3000/webjars/bootstrap/5.1.3/js/bootstrap.min.js"></script>
+</head>
+</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..9a062d59e677cdd89f9ef7504ce3691cf2a8905d
--- /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="/app/s202322014/code/proxy/3000/webjars/bootstrap/5.1.3/css/bootstrap.min.css">
+    <script src="/app/s202322014/code/proxy/3000/webjars/jquery/3.6.0/jquery.min.js"></script>
+    <script src="/app/s202322014/code/proxy/3000/webjars/popper.js/2.9.3/umd/popper.min.js"></script>
+    <script src="/app/s202322014/code/proxy/3000/webjars/bootstrap/5.1.3/js/bootstrap.min.js"></script>
+    <script>
+        $(document).ready(function () {
+            $("button").click(function () {
+                $.ajax({
+                    type: 'GET',
+                    url: '/app/s202322014/code/proxy/3000/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/productList.html b/src/main/resources/static/productList.html
new file mode 100644
index 0000000000000000000000000000000000000000..4b0828118ba11b24ca39d049dbefc918fd4f38bf
--- /dev/null
+++ b/src/main/resources/static/productList.html
@@ -0,0 +1,56 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+    <meta charset="UTF-8">
+    <title>Product</title>
+    <link rel="stylesheet" href="/app/s202322014/code/proxy/3000/webjars/bootstrap/5.1.3/css/bootstrap.min.css">
+    <script src="/app/s202322014/code/proxy/3000/webjars/jquery/3.6.0/jquery.min.js"></script>
+    <script src="/app/s202322014/code/proxy/3000/webjars/popper.js/2.9.3/umd/popper.min.js"></script>
+    <script src="/app/s202322014/code/proxy/3000/webjars/bootstrap/5.1.3/js/bootstrap.min.js"></script>
+    <script>
+        $(document).ready(function () {
+            $("button").click(function () {
+                $.ajax({
+                    type: 'GET',
+                    url: '/app/s202322014/code/proxy/3000/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>
+            </tr>
+            <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/repository/ItemRepositoryTest.java b/src/test/java/com/example/demo/repository/ItemRepositoryTest.java
index bb4cd0267b1abafd2551a5342692bc36cb9d7421..32b18c1d55b85bc8315c613be7364ba6416c2425 100644
--- a/src/test/java/com/example/demo/repository/ItemRepositoryTest.java
+++ b/src/test/java/com/example/demo/repository/ItemRepositoryTest.java
@@ -6,24 +6,88 @@ 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;
 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 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;
+import javax.swing.text.html.parser.Entity;
+
 @SpringBootTest
-@TestPropertySource(locations="classpath:application-test.properties")
-@RunWith( SpringJUnit4ClassRunner.class )
+@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());
+
+    @PersistenceContext
+    EntityManager em;
+
+    public void createItemList() {
+        for (int i = 1; i <= 10; i++) {
+        }
+    }
+
+    @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("@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