Skip to content
Snippets Groups Projects
Commit 7cfe2af4 authored by 정 원빈's avatar 정 원빈
Browse files

spring-basic

parent 5b7498f5
Branches
No related tags found
No related merge requests found
Showing
with 351 additions and 25 deletions
......@@ -124,6 +124,8 @@
</dependency>
</dependencies>
<build>
......
......@@ -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
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;
}
}
package com.example.demo.constant;
public enum Role {
USER, ADMIN
}
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();
}
}
package com.example.demo;
package com.example.demo.controller;
import lombok.Getter;
import lombok.Setter;
......
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;
}
}
......@@ -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);
}
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);
}
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;
}
}
<!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>
<!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>
<!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>
......@@ -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());
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment