Skip to content
Snippets Groups Projects
Commit 15e7f382 authored by 황 재인's avatar 황 재인
Browse files

second commit

parent 6b79d208
Branches master
No related tags found
No related merge requests found
Showing
with 357 additions and 40 deletions
......@@ -13,9 +13,5 @@ public class DemoApplication {
SpringApplication.run(DemoApplication.class, args);
}
@GetMapping(value="/")
public String HelloWorld() {
return "Hello World";
}
}
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
package com.example.demo.constant;
public enum Role {
USER, ADMIN
}
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
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
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
}
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;
}
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
......@@ -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);
}
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
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
<!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
<!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>
......@@ -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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment