본문 바로가기
반응형

프로그래밍/Spring71

ClassPathResource를 이용한 file 생성 java spring boot project에서 properties에서 file의 path 또는 name을 지정하고 생성하는 방식으로 사용하고 있다가 특정 경로를 설정해서 사용하는 방법 대신 resource폴더 아래에 특정 디렉토리를 만들고 파일을 생성해서 사용하는 방식으로 변경을 하고자 한다면 다음과 같은 방식을 이용해볼것을 권장한다. 나의 경우 csv file을 만들고 쓰고 읽고 하는 기능을 만들고 있는 중이다. /** * csv 파일을 생성하는 메서드 * @param filePath 파일 경로 * @param title 파일 제목 * @param content 내용 * @return */ public static int createCsvFile(String filePath, String title,.. 2020. 2. 26.
Failed to complete request: org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.AbstractMethodError: Method 전문가가 아니다. 자주 경험하지 못했다. 하는 족족 발목을 잡는 문제들이 하나씩 풀릴 때마다 무지의 극치를 적나라게 느낄 수 있다. 마이바티스의 fetchSize를 통해 대용량 처리를 위해 쿼리 문을 작성하고 DTO로 매핑을 시키는 과정에서 발생한 문제. 한참을 검색하고 찾다보니 저런 오류 메시지가 딱히 유형이 정해진건 아닌 듯하다. 다양한 경우들이 존재하면서 해결책을 찾기 어려울 것 같다는 생각이 들었다. 몇번을 더 고민하고 생각을 했지만 뾰족한 수가 없다. 선배에게 메신저로 물어보니 선배도 낯선 오류 같다면서 실행 화면을 보자고 한다. 실행된 마이바티스의 쿼리를 보니 unlead된 컬럼이 다수 존재했다. 즉 쿼리가 실행되고 DTO로 매핑하려는 순간 데이터 타입의 변환이 제대로 안되 발생하는 오류였다... 2020. 2. 10.
Mybatis & maridb log4jdbc설정 예. 한순간 한순간이 다 학습을 해야하는 순간이 되었다. 갑작스런 입춘 한파로 온 세상이 꽁꽁 얼어붙은 2월 5일. 오전내내 찾아 헤메이다 점심 먹기전 결정적으로(?) 해결을 한 mybatis 쿼리를 콘솔상에 찍는 설정. 별거 아닌데 모르면 참 헤메이는게 자바 스프링의 환경설정인 듯 하다. 우선 스프링부트2.x 프로젝트를 만들고 프로퍼티와 xml을 이용해서 프로젝트 환경 설정을 하고 mybatis를 통해 실행되는 쿼리를 눈으로 확인하기 위해서 몇가지 추가 설정을 하는 예이다. 먼저 의존성 추가. (pom.xml) org.mariadb.jdbc mariadb-java-client provided org.bgee.log4jdbc-log4j2 log4jdbc-log4j2-jdbc4 1.16 다음은 resources.. 2020. 2. 5.
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 이건 꼭 기록을 해야겠다. 지난 금요일 오후부터 월요일 오전까지 단 '한' 글자 때문에 고생한한 것을 생각하면 헛웃음이 나오는 일이다. 구글 검색을 통해 많은 사람들이 오타를 이야기했을 때 에이~ 오타가 어디있어...라고 생각했는데 결국 오타였다. 새로운 자바 프로젝트를 만들고 마이바티스와 JPA를 혼용해서 사용하려고 설정을 하던 중 만나게된 오류. org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 스프링부트를 사용하면서 설정해야하는 부분들은 다음과 같다. @SpringBootApplication @MapperScan("mi.travel.mapper*") @EntityScan("mi.travel*") public.. 2020. 1. 20.
@Enumerated 에 대한 이야기 얼마전 회사에 특성화고 졸업을 앞둔 친구가 세명 들어왔다. 이 아이들을 실습하고 교육을 해서 정규직으로 전환을 해야하는 과제가 생겼다. 각 파트별로 특성이 있는 친구들이라 특색을 살펴보는 것도 재미있는 일이다. 그중 백엔드 파트를 지원한 아이가 코딩한 부분을 보면서 @Enumerated를 사용한 부분을 보게 되었고 Swift나 Objective-C에서 자주 사용하는 방법과 유사해서 기록을 남겨 본다. 아마 그 친구도 내가 지금 읽고 있는 저자의 블로그나 책 같은 곳에서 보고 차용했을 것 같기도 하다. @Enumberated(EnumType.STRING) @Column(nullable = false) private Role role; JPA를 사용하는 domain(@Entity) 부분에 정의한 예. JPA.. 2020. 1. 7.
마이바티스의 동적 쿼리 마이바티스의 동적 쿼리 이런건 그냥 참고용으로 적어둔다. 아마도 언제가는 써먹지 싶다. 예) board-mapping.xml SELECT * FROM BOARD WHERE 1 = 1 AND TITLE LIKE '%'||#{searchKeyword}||'%' AND CONTENT LIKE '%'|| #{searchKeyword}|| '%' ORDER BY SEQ DESC 마이바티스의 동적 쿼리를 사용하면 조거너에 따라 쿼리의 특정 구문을 변형시킬 수 있기 때문에 유연한 쿼리를 사용할 수 있다. 2019. 12. 19.
반응형