여기서 사용해야 될 것은

 

@PathVariable("id") Integer id 

 

이거 한 줄이다.


ProductMapper.xml
<select id="getSelectOne" parameterType="Map" resultType="Map">
		SELECT
			ID,
			TITLE,
			CONTENT,
			ATTACH_FILE,
			REGIST_USER_ID,
			REGIST_DATE
		FROM
			PRODUCT
		where 
			DELETE_YN = 'N'
		<if test='id != null and id != ""'>
		AND ID = #{ID}
		</if>
	</select>

 

다음과 같이 파일이 있다고 해보자

 

 

ProductMapper.java
package qa.api.download.product;

import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
import qa.api.util.ResultMap;

import java.util.List;
import java.util.Map;

@Repository
@Mapper
public interface ProductMapper {

	List<Map<String, Object>> getSelectList(Map<String, Object> param);

	int getSelectCount();

	List<Map<String, Object>> getSelectOne(Integer ID);
}

 

 

getSelectOne 에 Integer ID를 해주는 것이다.

 

 

 

ProductService.java
package qa.api.download.product;

import java.io.IOException;
import java.util.List;
import java.util.Map;

import javax.annotation.Resources;

import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.origin.SystemEnvironmentOrigin;
import org.springframework.stereotype.Service;

import qa.api.login.LoginMapper;
import qa.api.util.ResultMap;

@Service ("ProductService")
public class ProductService{
	
	@Autowired
	private ProductMapper productMapper;
	
	public List<Map<String, Object>> getSelectList(Map<String, Object> param) throws Exception{
		List<Map<String, Object>> result = productMapper.getSelectList(param);
		return result;
	}
	
	public List<Map<String, Object>> getSelectOne(Integer ID) throws IOException {
		return productMapper.getSelectOne(ID);
	}
	
	public Integer getSelectCount() throws Exception {
		return productMapper.getSelectCount();
	}

}

 

서비스에서도 마찬가지고 본인이 가져올 시퀀스

 

Integer ID를 꼭 함께 같이 넣어줘야된다.

 

그래야 불러올 때 ID를 타고

 

ID = #{ID} 

 

에서 값을 불러온다.

 

 

 

ProductController.java
			@GetMapping("/detail/{id}")
			public ApiResponse getSelectOne(HttpServletRequest request, @RequestParam Map<String, Object> param,@PathVariable("id") Integer ID) throws Exception {
			
				logger.debug("URL :: {}, PARAM :: {}", request.getRequestURL(), ID);// 이건 그냥 디버그 나오도록 하는거라서 신경 x
				
				ApiResponse<Map<String, Object>> response = new ApiResponse<Map<String, Object>>();

				Map<String, Object> result = new HashMap<String, Object>();
				
				try { // getSelectOne(ID) 를 넣어줘야지 해당 시퀀스 ID의 데이터를 뽑아온다
					List<Map<String, Object>> one = productService.getSelectOne(ID); // list는 메모리가 허용하는 한 계속 추가 할 수 있는 자료형 클래스인 SelectOne 선언 
					result.put("SUCCESS", true); // SUCCESS 값 호출하면 true을 던져줌 , 사실 얘는 지금은 필요 없어보이지만 대기 
					result.put("ONE", one); // SELECT_ONE 호출해야지 selectOne을 호출 함 
					response.setResultCode(HttpStatus.OK); // 사용 하는 이유는 아직 모르겠음 SUCCESS
					response.setResultData(result); // ApiResponse에 result 넣어주면서 리액트로 넘어가는것 같음.
					
				} catch(Exception e){ // 예외처리
					
					logger.error(e.getMessage()); // 로그를 남기겠다
					response.setResultCode(HttpStatus.BAD_REQUEST); // 그 로그는 HttpStatus 상태가 Bad 일때 호출하는 에러표현을 꺼내옴 ex) 401 / 500 / 404 같은애들
				}
				return response; // 이모든 데이터들은 response로 다시 리턴
			}

 

 

 

여기서 가장 중요한 부분은

 

 

 

 

@PathVariable("id") Integer ID

 

이 줄이다.

 

그래야 ID값을 인식해서 가져와서 호출하기 때문이다.

 

 

 

다음과 같이 id 값을 인식하고 그 데이터를 가져올 수 있게 된다.

 

 

 

로그로도 확인해 볼 수 있다.

 

 


 

To  be continue..

복사했습니다!