본문 바로가기
반응형

List904

IncorrectResultSizeDataAccessException Spring JDBC 를 사용하게 될 경우 만나는 Exception 중 하나인 IncorrectResultSizeDataAccessException 는 queryForObject의 결과가 없을 때(null) 혹은 2개 이상일 때 발생한다. 아래 예시 코드를 보면 try { JdbcTemplate jdbcTemplate; String sql = "select name from UserTable where name = ?"; return jdbcTemplate.queryForObject(sql, String.class, "thenice"); } catch (IncorrectResultSizeDataAccessException error) { return null; } thenice에 대한 값이 1개일 경우엔.. 2024. 4. 23.
@RequestPart? 기존에 사용하던 @RequestParam은 key, value의 form에 사용되는 반면 @RequestPart는 더 복잡한 데이터(Part)들을 다루는 multipart/form-data에 적절하며 파일 추출때 유용하게 사용하는 어노테이션이다. 해당 annotation을 이해하기 위해서는 multipart 에 대한 이해가 있어야한다. 자세한 내용은 아래 참고 포스팅 참고 바란다. 아래 예제와 처럼 사용을 할 경우 multipart에 대한 값을 받을 수 있다. ..이상 생략 @PostMapping("/test") public void testMultipart(@RequestPart MultiTest test, @RequestPart(required = false) List files) throws Exc.. 2024. 4. 22.
File To MultipartFile / MultipartFile To File File To MultipartFile File file = new File("/home/test/test.dat"); DiskFileItem fileItem = new DiskFileItem("file", Files.probeContentType(file.toPath()), false, file.getName(), (int) file.length() , file.getParentFile()); InputStream input = new FileInputStream(file); OutputStream os = fileItem.getOutputStream(); IOUtils.copy(input, os); MultipartFile multipartFile = new CommonsMultipartFile(fi.. 2024. 4. 21.
멀티파트(Multipart)란? 멀티파트(Multipart)란 HTTP에서 form 을 통해서 파일을 등록해서 전송하는 방법이다. HTTP에 대한 내용은 참고 포스팅 참고 바란다. 멀티파트의 요청은 Content-Type 헤더를 multipart/form-data 값으로 지정을 해야하고 클라이언트가 파일 전송을 위해 request 할 때, HTTP request body에 데이터를 여러 부분으로 나눠서 보낸다. 파일을 한 번에 여러 개 전송 할 경우엔 body에 파일이 여러 개가 연결되어 전송된다. 주로 HTML Input element에서 enctype으로 이용된다. 사용법은 간단하게 @PostMapping(....) void test(MultipartFile mf){ ... 이런식으로 받아줄수 있고, String originFile.. 2024. 4. 20.
Entity에 AutoIncrement 컬럼 설정 JPA를 사용하면서 서로 다른 Entity를 다루다보면 save 시 id 값이 각각 나누어져야하는데 하나로 합쳐서 올라갈 때가 있다. 예를들어 아래와같이 간단히 코드를 짜면 ..이상 생략 memberRepository.save(new Mem()); userRepository.save(new User()); ..이하 생략 결과는 member는 초기값 1로 값이 들어가는데 user는 1로 초기값으로 들어가야하지만 2가 들어간다. 이럴 경우엔 IDENTITY 전략 을 사용해야한다. 방법은 2가지 이다. 전체 프로젝트에 적용 yml 파일에 아래와 같이 값을 추가한다. hibernate: use-new-id-generator-mappings: false 개별 Entity 에 적용 각 엔티티에 시퀀스/auto in.. 2024. 4. 19.
[Mysql] sql_mode=only_full_group_by Mysql 을 사용중인데 아래와 같은 에러가 발생했다. this is incompatible with sql_mode=only_full_group_by 찾던 중에 mysql 공식 홈페이지에서 이와 같은 글을 발견했다. https://dev.mysql.com/doc/refman/5.7/en/group-by-handling.html MySQL :: MySQL 5.7 Reference Manual :: 12.19.3 MySQL Handling of GROUP BY 12.19.3 MySQL Handling of GROUP BY SQL-92 and earlier does not permit queries for which the select list, HAVING condition, or ORDER BY list.. 2024. 4. 18.
[Mysql] 그룹함수 사용법 (with 로 사용) 예전 포스팅에서 그룹함수에 대해서 작성한 포스팅이 있다. 그룹함수에 대해서 자세한 내용은 아래 참고 포스팅 참고 바란다. 이번 포스팅은 다른 DBMS 들과는 Mysql 에서 그룹함수 사용법이 조금 달라서 따로 작성한다. 대표적으로 Rollup 함수에 대해서만 사용법을 작성할 것이다. Oracle을 비롯한 다른 DBMS에서는 Rollup 을 아래와 같이 사용한다. Oracle Rollup 예시 SELECT ID, COUNT(ID) FROM TEST GROUP BY ROLLUP(ID); Mysql 사용법은 아래와 같다. Mysql Rollup 예시 SELECT ID, COUNT(ID) FROM TEST GROUP BY ID WITH ROLLUP; 이렇게 with 가 추가되어 쿼리를 작성해야한다. 참고 포스팅.. 2024. 4. 17.
Maven 버전 충돌되는 라이브러리들. pom.xml 에 여러 dependency 를 설정하게 될 경우 각 라이브러리가 참조하는 라이브러리들이 충돌하는 경우가 있다. 예를들어 a.jar 파일을 받고 b.jar 파일을 받았다. 하지만 a 에는 test.jar:1.0.1 이고 b에는 test.jar:1.0.2 로 받아지면 프로젝트 build시 충돌이 난다. 이럴경우엔 exclusion으로 묶어주면 된다. org.springframework spring-context 4.0.0.RELEASE 이렇게 하여 충돌이 발생 했다면 org.springframework spring-context 4.0.0.RELEASE commons-logging commons-logging 이렇게 회피를 할수가 있다. maven에 대해서는 아래 참고 포스팅 참고 바란다. .. 2024. 4. 16.
Spring Boot [0.0.1-SNAPSHOT] is not compatible with this Spring Cloud release train IDE 에서 Spring 을 사용하며 maven build 를 진행하니 아래와 같은 에러가 발생하였다. Spring Boot [0.0.1-SNAPSHOT] is not compatible with this Spring Cloud release train 확인해보니 특정 라이브러리들이 버전끼리 호환이 잘 안되는 모양이었다. 그럼 application.yml 파일에 아래와 같은 설정 옵션을 추가하면 된다. spring.cloud.compatibility-verifier.enabled=false yml파일이나 maven에 대한 내용은 아래 참고 포스팅에서 참고 바란다. 참고 포스팅 https://thenicesj.tistory.com/197 빌드 관리도구 Maven / Gradle Spring 을 사용하게 되.. 2024. 4. 15.
반응형