Skip to content
Snippets Groups Projects
Commit 91d55c4d authored by Su Sandi  Ko's avatar Su Sandi Ko
Browse files

merge conflict fix

parents 57492481 922cd247
Branches
No related tags found
No related merge requests found
Showing
with 308 additions and 137 deletions
...@@ -28,6 +28,18 @@ ...@@ -28,6 +28,18 @@
<artifactId>spring-boot-starter-web</artifactId> <artifactId>spring-boot-starter-web</artifactId>
</dependency> </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> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId> <artifactId>spring-boot-starter-test</artifactId>
...@@ -79,6 +91,12 @@ ...@@ -79,6 +91,12 @@
<version>5.0.0</version> <version>5.0.0</version>
</dependency> </dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency> <dependency>
<groupId>com.googlecode.json-simple</groupId> <groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId> <artifactId>json-simple</artifactId>
...@@ -91,6 +109,19 @@ ...@@ -91,6 +109,19 @@
<version>2.9.0</version> <version>2.9.0</version>
</dependency> </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> <dependency>
<groupId>org.webjars</groupId> <groupId>org.webjars</groupId>
<artifactId>jquery</artifactId> <artifactId>jquery</artifactId>
...@@ -133,14 +164,7 @@ ...@@ -133,14 +164,7 @@
</dependency> </dependency>
</dependencies>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>
</dependencies>
<build> <build>
<plugins> <plugins>
...@@ -180,9 +204,6 @@ ...@@ -180,9 +204,6 @@
</execution> </execution>
</executions> </executions>
</plugin> </plugin>
</plugins> </plugins>
</build> </build>
......
...@@ -4,6 +4,7 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -4,6 +4,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner; import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication; 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.boot.autoconfigure.domain.EntityScan;
import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContext;
import java.util.Arrays; import java.util.Arrays;
...@@ -14,13 +15,16 @@ import org.apache.ibatis.session.SqlSessionFactory; ...@@ -14,13 +15,16 @@ import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean; import org.mybatis.spring.SqlSessionFactoryBean;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import javax.sql.DataSource; import javax.sql.DataSource;
//import org.springframework.core.io.support.PathMatchingResourcePatternReso
import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.Resource; import org.springframework.core.io.Resource;
@SpringBootApplication
@RestController @RestController
public class DemoApplication { @SpringBootApplication
// @EntityScan(basePackageClasses = {Item.class})
public class DemoApplication {// implements CommandLineRunner{
// @Autowired
// private ApplicationContext appContext;
public static void main(String[] args) { public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args); SpringApplication.run(DemoApplication.class, args);
} }
......
package com.example.demo.controller; package com.example.demo.controller;
import com.example.demo.service.MemberService; 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.entity.Member;
import com.example.demo.dto.MemberDto; 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.beans.factory.annotation.Autowired;
import org.springframework.data.repository.query.Param; import org.springframework.data.repository.query.Param;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@RestController @RestController
public class MemberController { public class MemberController {
@Autowired private final MemberService memberService;
MemberService memberService;
public MemberController(MemberService memberService) {
this.memberService = memberService;
}
public Member createMember() { private Member createMember() {
MemberDto memberDto = new MemberDto(); MemberDto memberDto = new MemberDto();
memberDto.setEmail("test@email.com"); memberDto.setEmail("user" + System.currentTimeMillis() + "@email.com"); // Unique email
memberDto.setName("홍길동"); memberDto.setName("홍길동");
memberDto.setAddress("서울시 마포구 합정동"); memberDto.setAddress("서울시 마포구 합정동");
memberDto.setPassword("1234"); memberDto.setPassword("1234");
return Member.createMember(memberDto); return Member.createMember(memberDto);
} }
@RequestMapping(value = "/membertest", method = RequestMethod.GET) @GetMapping("/membertest")
public void membertest() { public ResponseEntity<Map<String, Object>> membertest() {
Member member = createMember(); try {
Member savedMember = memberService.saveMember(member); Member member = createMember();
System.out.println(member); Member savedMember = memberService.saveMember(member);
System.out.println(savedMember); 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", "서버 오류가 발생했습니다."));
}
} }
@RequestMapping(value = "/makeMember", method = RequestMethod.POST) @PostMapping("/makeMember")
public String makeMember(@RequestBody String param) { public ResponseEntity<Map<String, Object>> makeMember(@RequestBody MemberDto memberDto) {
System.out.println(param); try {
return "OK"; 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", "서버 오류가 발생했습니다."));
}
} }
} }
...@@ -15,34 +15,21 @@ public class TestController { ...@@ -15,34 +15,21 @@ public class TestController {
public String test(@RequestParam("id") String id) { public String test(@RequestParam("id") String id) {
JsonObject obj = new JsonObject(); JsonObject obj = new JsonObject();
obj.addProperty("item_nm", "수제 햄버거"); obj.addProperty("item_nm", "수제 햄버거");
obj.addProperty("item_detail", "소고기 패티와 토마토가 들어 있는햄버거"); obj.addProperty("item_detail", "소고기 패티와 토마토가 들어 있는 햄버거");
obj.addProperty("item_reg_date", "2022/04/22"); obj.addProperty("item_reg_date", "2022/04/22");
obj.addProperty("item_price", "4000"); obj.addProperty("item_price", "4000");
return obj.toString(); return obj.toString();
} }
@RequestMapping(value = "/productlist", method = RequestMethod.GET) @RequestMapping(value = "/productlist", method = RequestMethod.GET) public String productList(){
public String productList() { JsonObject obj1 = new JsonObject(); obj1.addProperty("item_nm", "수제 햄버거"); obj1.addProperty("item_detail", "소고기 패티와 토마토가 들어 있는 햄버거");
JsonObject obj1 = new JsonObject(); obj1.addProperty("item_reg_date", "2022/04/22"); obj1.addProperty("item_price", "4000");
obj1.addProperty("item_nm", "수제 햄버거"); 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");
obj1.addProperty("item_detail", "소고기 패티와 토마토가 들어 있는햄버거"); 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");
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(); JsonArray infoArray = new JsonArray();
infoArray.add(obj1); infoArray.add(obj1);
infoArray.add(obj2); infoArray.add(obj2);
infoArray.add(obj3); infoArray.add(obj3);
return infoArray.toString(); return infoArray.toString();
}
} }
}
\ No newline at end of file
...@@ -2,5 +2,5 @@ package com.example.demo.dao; ...@@ -2,5 +2,5 @@ package com.example.demo.dao;
import java.util.List; import java.util.List;
import com.example.demo.dto.UserDTO; import com.example.demo.dto.UserDTO;
public interface UserDAO { public interface UserDAO {
List<UserDTO> selectUsers(UserDTO param) throws Exception; List<UserDTO> selectUsers(UserDTO param) throws Exception;
} }
...@@ -11,5 +11,4 @@ public class MemberDto { ...@@ -11,5 +11,4 @@ public class MemberDto {
private String password; private String password;
private String address; private String address;
} }
package com.example.demo.dto; package com.example.demo.dto;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter; import lombok.Setter;
@AllArgsConstructor // 자동으로 모든 매개변수를 받는 생성자를 생성
@Getter // Getter 생성 @Getter
@Setter // Setter 생성 @Setter
@NoArgsConstructor // Add no-args constructor for MyBatis
@AllArgsConstructor
public class UserDTO { public class UserDTO {
private int seq; private int seq;
private String name; private String name;
......
package com.example.demo.entity; package com.example.demo.entity;
import com.example.demo.constant.ItemSellStatus; import com.example.demo.constant.ItemSellStatus;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
...@@ -7,26 +8,26 @@ import java.time.LocalDateTime; ...@@ -7,26 +8,26 @@ import java.time.LocalDateTime;
import javax.persistence.*; import javax.persistence.*;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@Table(name="item") @Table(name = "item")
@Getter @Getter
@Setter @Setter
@ToString @ToString
@Entity @Entity
public class Item { public class Item {
@Id @Id
@Column(name="item_id") @Column(name = "item_id")
@GeneratedValue(strategy = GenerationType.AUTO) @GeneratedValue(strategy = GenerationType.AUTO)
private Long id; private Long id;
@Column(nullable = false, length= 50) @Column(nullable = false, length = 50)
private String itemNm; private String itemNm;
@Column(name="price", nullable = false) @Column(name = "price", nullable = false)
private int price; private int price;
@Column(nullable = false) @Column(nullable = false)
private int stockNumber; private int stockNumber;
@Lob @Lob
@Column(nullable = false) @Column(nullable = false)
private String itemDetail; private String itemDetail;
@Enumerated(EnumType.STRING) @Enumerated(EnumType.STRING)
private ItemSellStatus itemSellStatus; private ItemSellStatus itemSellStatus;
private LocalDateTime regTime; private LocalDateTime regTime;
private LocalDateTime updateTime; private LocalDateTime updateTime;
......
...@@ -6,18 +6,12 @@ import org.springframework.data.repository.query.Param; ...@@ -6,18 +6,12 @@ import org.springframework.data.repository.query.Param;
import java.util.List; import java.util.List;
import com.example.demo.entity.Item; import com.example.demo.entity.Item;
// @NoRepositoryBean // @NoRepositoryBean
public interface ItemRepository extends JpaRepository<Item, Long>{ public interface ItemRepository extends JpaRepository<Item, Long>{
List<Item> findByItemNm(String itemNm); List<Item> findByItemNm(String itemNm);
List<Item> findByItemNmOrItemDetail(String itemNm, String itemDetail); List<Item> findByItemNmOrItemDetail(String itemNm, String itemDetail);
List<Item> findByPriceLessThan(Integer price); List<Item> findByPriceLessThan(Integer price);
List<Item> findByPriceLessThanOrderByPriceDesc(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);
/*
* @Query("select i from Item i where i.itemDetail like %:itemDetail%order by i.price desc")
List<Item> findByItemDetail(@Param("itemDetail") String itemDetail);
*
*/
} }
......
package com.example.demo.repository; package com.example.demo.repository;
import com.example.demo.entity.*;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import com.example.demo.entity.*;
public interface MemberRepository extends JpaRepository<Member, Long>{ public interface MemberRepository extends JpaRepository<Member, Long> {
Member findByEmail(String email); Member findByEmail(String email);
} }
...@@ -14,17 +14,14 @@ public class MemberService { ...@@ -14,17 +14,14 @@ public class MemberService {
private final MemberRepository memberRepository; private final MemberRepository memberRepository;
public Member saveMember(Member member) { public Member saveMember(Member member) {
validateDuplicatetMember(member); if (!validateDuplicatetMember(member)) {
throw new IllegalStateException("이미 가입된 회원입니다.");
}
return memberRepository.save(member); return memberRepository.save(member);
} }
private boolean validateDuplicatetMember(Member member) { private boolean validateDuplicatetMember(Member member) {
Member findMember = memberRepository.findByEmail(member.getEmail()); Member findMember = memberRepository.findByEmail(member.getEmail());
if (findMember != null) { return findMember == null;
System.out.println("이미 가입된 회원입니다.");
return false;
}
return true;
} }
} }
...@@ -7,9 +7,12 @@ spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver ...@@ -7,9 +7,12 @@ spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=root spring.datasource.username=root
spring.datasource.password=web1 spring.datasource.password=web1
# spring.datasource.driver-class-name=org.h2.Driver # 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.username=sa
# spring.datasource.password= # spring.datasource.password=
# spring.jpa.database-platform=org.hibernate.dialect.H2Dialect # spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
# spring.jpa.hibernate.ddl-auto=create # 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 spring.jpa.properties.hibernate.show_sql = true
\ No newline at end of file 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
<?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
...@@ -2,41 +2,41 @@ ...@@ -2,41 +2,41 @@
<html> <html>
<head> <head>
<meta charset="utf-8"> <title>Test Webjars</title>
<title>Insert title here</title> <link rel="stylesheet" href="/app/s202322014/code/proxy/3000/webjars/bootstrap/5.1.3/css/bootstrap.min.css">
<link rel="stylesheet" href="/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="/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="/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 src="/webjars/bootstrap/5.1.3/js/bootstrap.min.js"></script> </head>
</head> </head>
<body> <body>
<div class="container"> <div class="container">
<table class="table table-hover"> <table class="table table-hover">
<thead class="thead-dark"> <thead class="thead-dark">
<tr> <tr>
<th>codeId</th> <th>codeId</th>
<th>code</th> <th>code</th>
<th>codeNm</th> <th>codeNm</th>
<th>codeDc</th> <th>codeDc</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr> <tr>
<td>COM001</td> <td>COM001</td>
<td>REG01</td> <td>REG01</td>
<td>단일 게시판 이용 등록</td> <td>단일 게시판 이용 등록</td>
<td>단일 게시판 이용 등록</td> <td>단일 게시판 이용 등록</td>
</tr> </tr>
<tr> <tr>
<td>COM001</td> <td>COM001</td>
<td>REG02</td> <td>REG02</td>
<td>커뮤니티 등록/td> <td>커뮤니티 등록/td>
<td>커뮤니티 등록</td> <td>커뮤니티 등록</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
</body> </body>
</html> </html>
\ No newline at end of file
...@@ -4,29 +4,22 @@ ...@@ -4,29 +4,22 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<title>Product</title> <title>Product</title>
<link rel="stylesheet" href="/webjars/bootstrap/5.1.3/css/bootstrap.min.css"> <link rel="stylesheet" href="/app/s202322014/code/proxy/3000/webjars/bootstrap/5.1.3/css/bootstrap.min.css">
<script src="/webjars/jquery/3.6.0/jquery.min.js"></script> <script src="/app/s202322014/code/proxy/3000/webjars/jquery/3.6.0/jquery.min.js"></script>
<script src="/webjars/popper.js/2.9.3/umd/popper.min.js"></script> <script src="/app/s202322014/code/proxy/3000/webjars/popper.js/2.9.3/umd/popper.min.js"></script>
<script src="/webjars/bootstrap/5.1.3/js/bootstrap.min.js"></script> <script src="/app/s202322014/code/proxy/3000/webjars/bootstrap/5.1.3/js/bootstrap.min.js"></script>
<script> <script>
$(document).ready(function () { $(document).ready(function () {
$("button").click(function () { $("button").click(function () {
$.ajax({ $.ajax({
type: 'GET', type: 'GET',
url: '/productlist', url: '/app/s202322014/code/proxy/3000/test?id=1',
success: function (data) { success: function (data) {
var array = JSON.parse(data); var obj = JSON.parse(data);
for (i = 0; i < array.length; i++) { $('#item_nm span').text(obj.item_nm)
var obj = array[i]; $('#item_detail span').text(obj.item_detail)
html = ''; $('#item_reg_date span').text(obj.item_reg_date)
html += '<tr>'; $('#item_price span').text(obj.item_price)
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);
}
} }
}); });
}); });
...@@ -35,6 +28,7 @@ ...@@ -35,6 +28,7 @@
</head> </head>
<body> <body>
<<<<<<< HEAD
<h1>상품 데이터 목록 출력</h1> <h1>상품 데이터 목록 출력</h1>
<button>조회</button> <button>조회</button>
<table class="table table-hover"> <table class="table table-hover">
...@@ -49,6 +43,14 @@ ...@@ -49,6 +43,14 @@
<tbody id="tableBody"> <tbody id="tableBody">
</tbody> </tbody>
</table> </table>
=======
<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>
>>>>>>> fix_branch
</body> </body>
</html> </html>
\ No newline at end of file
<!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
...@@ -18,7 +18,11 @@ import com.querydsl.jpa.impl.JPAQueryFactory; ...@@ -18,7 +18,11 @@ import com.querydsl.jpa.impl.JPAQueryFactory;
import com.querydsl.jpa.impl.JPAQuery; import com.querydsl.jpa.impl.JPAQuery;
import javax.persistence.EntityManager; import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext; import javax.persistence.PersistenceContext;
import javax.swing.text.html.parser.Entity;
@SpringBootTest
@TestPropertySource(locations = "classpath:application-test.properties")
@RunWith(SpringJUnit4ClassRunner.class)
public class ItemRepositoryTest { public class ItemRepositoryTest {
@Autowired @Autowired
ItemRepository itemRepository; ItemRepository itemRepository;
...@@ -28,7 +32,62 @@ public class ItemRepositoryTest { ...@@ -28,7 +32,62 @@ public class ItemRepositoryTest {
public void createItemList() { public void createItemList() {
for (int i = 1; i <= 10; i++) { 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());
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment