분류 전체보기 (277)

반응형

 

Node js란

 

: JavaScript 런타임

개수는 많지만 크기는 작은 데이터를 실시간으로 주고 받는 데 적합  => SNS나 채팅서비스에 많이 사용
코드가 매우 짧고 쉬워서 빠른 개발 가능

 

 

런타임

: 프로그램들을 실행할 수 있는 환경

 

 

 

다운로드 방법

 

 

1. 하단의 링크로 이동

https://github.com/coreybutler/nvm-windows

 

GitHub - coreybutler/nvm-windows: A node.js version management utility for Windows. Ironically written in Go.

A node.js version management utility for Windows. Ironically written in Go. - coreybutler/nvm-windows

github.com

 

 

2

 

2. 링크 클릭

 

 

3

 

3. 링크 클릭 후 다운로드

 

 

4

 

4. 받은 파일 더블 클릭하여 설치

 

 

 

설치 및 실행 방법

 

 

1

 

1. cmd 검색  > 관리자 권한으로 실행

 

 

2

 

2. nvm -v로 버전 확인

 

 

3

 

3. nvm -help 로 실행 가능한 코드 확인

nvm installnvm list 를 자주 사용함

 

 

4

 

4. nvm list nvm ls 로 설치 여부 확인

nvm listnvm ls 는 같은 뜻

 

 

5

 

5. nvm ls available 로 설치할 수 있는 버전 확인

Node js는 버전이 많고 자세함. 5번의 경우 일부만 출력된 것.

 

 

6

 

6. nvm install 20.15.1 로 설치

버전의 경우 위의 버전 확인한 것 중에서 하나 골라 설치하면 됨.

 

 

7

 

7. nvm ls 로 설치된 버전 확인 가능

 

 

8

 

8. 다른 버전 추가 설치 > nvm use 20.15.1로 사용 버전 정함 > nvm ls로 사용 버전과 버전들 확인 (*로 사용하는 버전 확인)

 

 

9

 

9. 확실히 사용하는 node 버전 확인 시 node -v 사용

 

 

 

사용 cmd 용어 정리

 

cmd 입력 코드
nvm -v 버전 확인
nvm -help 실행 가능한 코드 확인
nvm list
nvm ls
설치 여부 확인
nvm ls available 설치할 수 있는 버전 확인
nvm install 버전 버전으로 설치
nvm use 버전 사용할 버전으로 전환
node -v node의 버전 확인

 

 

반응형
반응형

 

service 생성

 

service을 class로 만들 것이기에 serviceImpl을 만들지 않아도 됨.

이 경우 service는 mapper에 값을 전달함.

 

 

BdService.java

package com.th.hmmerorng.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.th.hmmerorng.mapper.BdMapper;
import com.th.hmmerorng.vo.BdVO;

@Service //비지닉스 로직을 보통 담음 (Front로 넘어 가는 중)
public class BdService {

	@Autowired //서비스는 맵퍼를 부름 (프레임워크에서 그렇게 설계함. 관례적으로 좋음)
	private BdMapper bdMapper;
	
	public List<BdVO> getBdList() {
		return bdMapper.getBdList();
	}
	
	public BdVO getBd(BdVO bdVO) {
		return bdMapper.getBd(bdVO);
	}
	
	public int insBd(BdVO bdVO) {
		return bdMapper.insBd(bdVO);
	}
	
	public int upBd(BdVO bdVO) {
		return bdMapper.upBd(bdVO);
	}
	
	public int delBd(BdVO bdVO) {
		return bdMapper.delBd(bdVO);
	}
}

 

 

 

controller 생성

 

 

BdController.java

package com.th.hmmerorng.controller;

import java.util.List;

import org.apache.ibatis.annotations.Delete;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.th.hmmerorng.service.BdService;
import com.th.hmmerorng.vo.BdVO;

@RestController //@Controller + @ResponseBody
@RequestMapping("/api") //접수 창구 이름을 만들어야 함(규모가 크면 계층적으로)
public class BdController {
	
	@Autowired
	private BdService bdService;
	
	@GetMapping("/bds")
	public List<BdVO> getBdList() {
		return bdService.getBdList();
	}
	
	@GetMapping("/bds/{bdNum}") //{} 안에 있는 걸 받기 위해선 @PathVariable 사용
	public BdVO getBd(@PathVariable int bdNum) { //@PathVariable의 이름이 {}안에 있는 이름과 같아야 함
		BdVO bdVO = new BdVO();
		bdVO.setBdNum(bdNum);
		
		return bdService.getBd(bdVO);
	}
	
	@PostMapping("/bds") //파일 첨부면 @RequestBody 사용 x
	public String insBd(@RequestBody BdVO bdVO) {
		int cnt = bdService.insBd(bdVO);
		
		if(cnt == 0) {
			return "NG";
		}
		return "OK";
	}
	
	@PutMapping("/bds")
	public String upBd(@RequestBody BdVO bdVO) {
		int cnt = bdService.upBd(bdVO);
		
		if(cnt == 0) {
			return "NG";
		}
		return "OK";
	}
	
	@DeleteMapping("/bds/{bdNum}")
	public String delBd(@PathVariable int bdNum) {
		BdVO bdVO = new BdVO();
		bdVO.setBdNum(bdNum);
		
		int cnt = bdService.delBd(bdVO);
		
		if(cnt == 0) {
			return "NG";
		}
		return "OK";
	}
}

 

 

 

+ 위의 파일을 만든 후 하단의 링크에서 테스트 가능

(sts4에서 서버를 실행해야 함!!)

 

chrome-extension://eipdnjedkpcnlmmdfdkgfpljanehloah/workspace

 

크롬의 확장 프로그램을 설치해야함.

 

 

테스트 화면

 

 

반응형
반응형

 

테스트 실행 : 한 개의 데이터만 집어 넣기

 

  • 경로 위치

테스트 용이기에 src/test/java에 생성함

 

 

 

BdMapperTest.java

@Test, @DisplayName 어노테이션 사용

package com.th.hmmerorng.mapper;

import static org.junit.jupiter.api.Assertions.assertEquals;

import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import com.th.hmmerorng.vo.BdVO;

import lombok.extern.slf4j.Slf4j;

@Slf4j
@SpringBootTest //boot의 편리성
public class BdMapperTest {
	
	@Autowired
	private BdMapper bdMapper;
	
	//테이블에 데이터가 없으니, insert 먼저 테스트
	@Test //서버 실행 없이 Junit(테스트 프레임워크)으로 구동 가능
	@DisplayName("입력 테스트")
	void insTest() {
		BdVO bdVO = new BdVO();
		bdVO.setBdTitle("테스트용");
		bdVO.setBdCont("컴퍼니 회사");
		bdVO.setBdFurl("http://pimg.daara.co.kr/kidd/photo/2016/12/30/thumbs/thumb_520390_1483079064_25.jpg");
		
		int cnt = bdMapper.insBd(bdVO);
		
		assertEquals(1, cnt); //cnt값이 1이 나오면 성공(pass), 아님 실패
	}
}

 

 

 

  • 실행 방법

 

1. 오른쪽 마우스 클릭

 

 

2

 

2. Run As > JUnit Test 클릭

 

 

성공시 화면

 

 

전체 실행 화면

 

 

 

여러 개의 데이터만 집어 넣기

 

 

BdMapperTest.java

기존의 파일에 메소드 추가

package com.th.hmmerorng.mapper;

import static org.junit.jupiter.api.Assertions.assertEquals;

import java.util.Iterator;

import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import com.th.hmmerorng.vo.BdVO;

import lombok.extern.slf4j.Slf4j;

@Slf4j
@SpringBootTest //boot의 편리성
public class BdMapperTest {
	
	@Autowired
	private BdMapper bdMapper;
	
	//여러개 데이터 넣기
	@Test //서버 실행 없이 Junit(테스트 프레임워크)으로 구동 가능
	@DisplayName("입력 테스트2")
	void insMultiTest() {
		BdVO bdVO;
		int cnt = 0;
		
		for(int i=1; i<=23; i++) {
			bdVO = new BdVO();
			bdVO.setBdTitle("테스트용 두번째");
			bdVO.setBdCont("컴퍼니 회사");
			bdVO.setBdFurl("http://pimg.daara.co.kr/kidd/photo/2016/12/30/thumbs/thumb_520390_1483079064_25.jpg");
			cnt += bdMapper.insBd(bdVO);
		}
		
		assertEquals(23, cnt); //cnt값이 1이 나오면 성공(pass), 아님 실패
	}
}

 

결과 화면1

 

 

 

값 List로 가져오기

 

 

@Disabled
실행 시 원래 다 실행하기에 문제가 있을 수 있음
그렇기에 다 사용한 메소드의 상단에 작성해야 함.

 

 

BdMapperTest.java

기존의 파일에 메소드 추가

@Test
@DisplayName("getList 테스트")
void getListTest() {
    List<BdVO> bdList = bdMapper.getBdList();

    log.debug("확실히 확인하기 위해 찍음 : {}", bdList);

    assertEquals(124, bdList.size()); //추가된 데이터 갯수가 124개라 이렇게 씀
}

 

결과 화면2

 

 

 

값 1개 가져오기

 


BdMapperTest.java

기존의 파일에 메소드 추가

@Test
@DisplayName("bdVO 1개 가져오기")
void getBdTest() {
    BdVO bdVO = new BdVO();
    bdVO.setBdNum(78);
    BdVO testVO = bdMapper.getBd(bdVO);
    log.debug("확실히 확인 {}", testVO);
    assertEquals("테스트용 두번째", testVO.getBdTitle()); //78번째 데이터 제목 넣어서 확인
}

 

결과 화면3

 

 

 

데이터 수정하기

 


BdMapperTest.java

기존의 파일에 메소드 추가

@Test
@DisplayName("수정 테스트")
void upBdTest() {

    BdVO bdVO = new BdVO();
    bdVO.setBdNum(30); //이미 존재하는 번호를 1개 줘야함
    bdVO.setBdTitle("수정 완료");
    bdVO.setBdCont("수정 테스트 진행을 완료했습니다.");

    int cnt = bdMapper.upBd(bdVO);
    assertEquals(1, cnt);
}

 

결과 화면4-1

 

결과 화면4-2

 

 

 

최종 BdMapperTest.java 파일

package com.th.hmmerorng.mapper;

import static org.junit.jupiter.api.Assertions.assertEquals;

import java.util.Iterator;
import java.util.List;

import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import com.th.hmmerorng.vo.BdVO;

import lombok.extern.slf4j.Slf4j;

@Slf4j
@SpringBootTest //boot의 편리성
public class BdMapperTest {
	
	@Autowired
	private BdMapper bdMapper;
	
	//테이블에 데이터가 없으니, insert 먼저 테스트
	@Test //서버 실행 없이 Junit(테스트 프레임워크)으로 구동 가능
	@Disabled
	@DisplayName("입력 테스트")
	void insTest() {
		BdVO bdVO = new BdVO();
		bdVO.setBdTitle("테스트용");
		bdVO.setBdCont("컴퍼니 회사");
		bdVO.setBdFurl("http://pimg.daara.co.kr/kidd/photo/2016/12/30/thumbs/thumb_520390_1483079064_25.jpg");
		
		int cnt = bdMapper.insBd(bdVO);
		
		assertEquals(1, cnt); //cnt값이 1이 나오면 성공(pass), 아님 실패
	}
	
	//여러개 데이터 넣기
	@Test //서버 실행 없이 Junit(테스트 프레임워크)으로 구동 가능
	@Disabled
	@DisplayName("입력 테스트2")
	void insMultiTest() {
		BdVO bdVO;
		int cnt = 0;
		
		for(int i=1; i<=23; i++) {
			bdVO = new BdVO();
			bdVO.setBdTitle("테스트용 두번째");
			bdVO.setBdCont("컴퍼니 회사" + i);
			bdVO.setBdFurl("http://pimg.daara.co.kr/kidd/photo/2016/12/30/thumbs/thumb_520390_1483079064_25.jpg");
			cnt += bdMapper.insBd(bdVO);
		}
		
		assertEquals(23, cnt); //cnt값이 1이 나오면 성공(pass), 아님 실패
	}
	
	@Test
	@Disabled
	@DisplayName("getList 테스트")
	void getListTest() {
		List<BdVO> bdList = bdMapper.getBdList();
		
		log.debug("확실히 확인하기 위해 찍음 : {}", bdList);
		
		assertEquals(124, bdList.size()); //추가된 데이터 갯수가 124개라 이렇게 씀
	}
	
	@Test
	@Disabled
	@DisplayName("bdVO 1개 가져오기")
	void getBdTest() {
		BdVO bdVO = new BdVO();
		bdVO.setBdNum(78);
		BdVO testVO = bdMapper.getBd(bdVO);
		log.debug("확실히 확인 {}", testVO);
		assertEquals("테스트용 두번째", testVO.getBdTitle()); //78번째 데이터 제목 넣어서 확인
	}
	
	@Test
	@DisplayName("수정 테스트")
	void upBdTest() {
		
		BdVO bdVO = new BdVO();
		bdVO.setBdNum(30); //이미 존재하는 번호를 1개 줘야함
		bdVO.setBdTitle("수정 완료");
		bdVO.setBdCont("수정 테스트 진행을 완료했습니다.");
		
		int cnt = bdMapper.upBd(bdVO);
		assertEquals(1, cnt);
	}
	
}

 

 

반응형
1 2 3 4 5 6 ··· 93