![Oracle Mybatis Clob Select](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Ftypdv%2FbtrZcleft6B%2FLZEiKGTLtqBlVmikiUY2Ck%2Fimg.png)
✅ 최초 Mapper 최초 Mapper를 작성할 때는 아무런 생각 없이 Map 형식으로 가져오려고 시도하였다. ⏹️ imageMapper.xml select MASK_INFO, from TB_ELB_MASK_B where EID = #{EID} 위와 같이 쿼리를 작성하였더니 오류는 나지 않지만 데이터를 제대로 가져오지 못하였다. ✅ ResultMap의 사용 그래서 두 번째로 resultMap을 통해 Clob을 String으로 변환하는 과정을 만들었다. ⏹️ imageMapper.xml select MASK_INFO, from TB_ELB_MASK_B where EID = #{EID} 위와 같이 resultMap에서 CLOB을 String으로 변환하고 실제 select 쿼리에서는 reulstType이 아니..
![추억의 달팽이, Up & Down 게임 만들기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0P0iv%2FbtrYMOfrUUZ%2F5NvTElhzJT9OLozzKVfd6k%2Fimg.png)
추억팔이를 하며 과거에 젖어있을 때 어릴 적 C언어 공부의 흔적을 발견했다. 그냥 없애버릴까 하다가 버리기 아쉬워서 올려본다. ✅ 달팽이 만들기 #include int main() { int array[5][5]; int i = 0, j = -1, down = 5, num = 1, cnt = 1, a; while(1) { for(a = 0; a < down; a++) { j += num; array[i][j] = cnt; cnt++; } down--; if (down < 0) break; for(a = 0; a < down; a++) { i += num; array[i][j] = cnt; cnt++; } num = -num; } for (i = 0; i < 5; i++) { for (j = 0; j < ..
![Spring boot RestAPI 파일 다운로드](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FU2sHE%2FbtrYI44ALmu%2FAZvYHrkPxCcqH0KTkyyx01%2Fimg.png)
✅ Controller 로컬(서버)에서 가지고 있는 이미지를 클라이언트가 다운로드 받을 수 있도록 컨트롤러를 먼저 구현한다. /** * 이미지 다운로드 * @param elementId * @return */ @GetMapping("/imageDownload") public ResponseEntity imageDownload(@RequestParam String elementId) { File file = new File("C:/Temp/ECM/" + elementId + ".tif"); String path = "C:/Temp/ECM/"; // 이 부분은 ECM 엔진에서 이미지를 다운로드 받는 별도의 // 로직을 구현해뒀음 if(file.exists()) { path = path + elementId ..
![Javascript 날짜 계산기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbfsW2D%2FbtrXHIN9nyD%2FXsLTuhcyOHoieqgy23c5yK%2Fimg.png)
✅ 왜? 위와 같이 오늘 날짜를 기준으로 특정 날짜를 가져오고 싶었는데 여러 페이지에서 매번 new Date() 하는 것도 번거롭고 const now = new Date(); const tomorrow = now.getDate() + 1; 이런 식으로 간단하게 적용해 버리면 31일에는 오류가 날 수밖에 없다. 그래서 날짜를 구해야하는 모든 페이지에서 간단하게 적용하기 위해 계산기를 만들었다. ✅ 날짜 계산기 Script function getDate(addYear, addMonth, addDay, token) { token = token == undefined || token == null ? "-" : token; addYear = addYear == null ? 0 : addYear; addMonth..
![Spring boot Controller Zip 압축 해제](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbo4ZtQ%2FbtrW9pbk6hE%2F8fwvKtetdFwsKDpyh09dc0%2Fimg.jpg)
회사 프로젝트를 진행하다가 MultipartFile로 전달받은 Zip 파일을 처리하는 방법을 알아보았다. Spring 게시판도 얼른 마무리 지어야하는데 회사업무 처리하는데 급급하다가 나태지옥에 빠져버려 아직도 손도 못대고 있다... 정신 차려야지 ㅠㅠ ✅Controller 우선 Controller에서 Zip 파일을 받아본다. @RestController public class IfElb008Controller { @PostMapping("/ifElb008") public Map scanImage(@RequestPart MultipartFile files) { return map; } } 평소와 같이 @RequestBody, @RequestParam을 사용하는 것이 아니라 @RequestPart를 사용하여..
![Swiper <DevTools failed to load source map>](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcIj98M%2FbtrS6kESERa%2FvTOKPkLoZSiA4PvGExt1GK%2Fimg.png)
Swiper를 사용하기 위해 적용 후 테스트를 진행하다 Console을 들여다보았더니 아래와 같은 문구가 출력되었다. ✅sourcemap이란? 아주 간단하게 설명하자면 빌드 전, 후 파일을 맵핑 시켜서 빌드 이후 발생하는 오류를 어떤 파일, 위치에서 생긴 것인지를 알 수 있게 해주는 녀석이다. 즉, 원활한 디버깅을 위해서 필요하다는 것 ✅문제 해결 해당 warning을 해결하기 위해서는 두가지 방법이 있다. https://github.com/nolimits4web/swiper GitHub - nolimits4web/swiper: Most modern mobile touch slider with hardware accelerated transitions Most modern mobile touch slid..
![spring boot 게시판 - 9 <게시물 수정, 삭제>](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdUCex3%2FbtrSsRxxEWH%2Fjp8kIjKPLAG9nuTG2XzSU0%2Fimg.png)
2022.11.30 - [Java/spring 게시판] - spring boot 게시판 - 8 spring boot 게시판 - 8 2022.11.24 - [Java/spring 게시판] - spring boot 게시판 - 7 spring boot 게시판 - 7 2022.11.22 - [Java/spring 게시판] - spring boot 게시판 - 6 spring boot 게시판 - 6 https://magicmk.tistory.com/32 spring boot 게시판 - 5 https://magicmk.t magicmk.tistory.com 게시물 작성, 조회에 이어 바로 수정, 삭제를 작성한다. ✅게시물 수정 수정의 경우에는 작성자가 아닌 유저가 수정을 해서는 안되기 때문에 인증 과정을 컨트롤러에 ..
![spring boot 게시판 - 8 <게시물 작성, 조회>](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzDeh0%2FbtrSwCTjazK%2F2iOHW1KY7dJekJh99HP1pk%2Fimg.png)
2022.11.24 - [Java/spring 게시판] - spring boot 게시판 - 7 spring boot 게시판 - 7 2022.11.22 - [Java/spring 게시판] - spring boot 게시판 - 6 spring boot 게시판 - 6 https://magicmk.tistory.com/32 spring boot 게시판 - 5 https://magicmk.tistory.com/31 spring boot 게시판 - 4 https://magicmk.tistory.com/29 spring boot 게시 magicmk.tistory.com 이전에 회원 관련 로직을 대부분 구현 한 뒤 이번에는 게시물에 관련된 로직을 구현해봤는데 회원 로직과 비슷한 부분이 많아 상대적으로 수월했던 것 같다...