반응형

IT/development 226

[eclipse] eclipse java comment template 설정

목차 eclipse java comment template 설정 😄 eclipse에서 java 주석 템플릿을 미리 설정해서 소스에 적용하는 방법을 기록한다. Window > Preferences > Java > Code Style > Code Templates > Comments 여기서 코드 샘플을 미리 작성해두고 소스에 적용하면 된다. Class에 주석을 달려면 Types 선택 후 Edit 눌러서 작성을 한다. 위처럼 주석 template을 설정 후 코드에 적용하려면 클래스명 선택 후 shirt + alt + j를 누르면 된다. Class와 method 등 작성 시 공통된 형식의 주석으로 관리하는게 이력관리 및 협업 시 효율적이다. 😎 SVN도 이처럼 template을 미리 설정할 수가 있다. Wind..

IT/development 2022.11.23

[spring] 의존성 주입 시 NPE(NullPointerException)

목차 spring에서 의존성 주입 시 자주 발생하는 실수이다.(나다, 내가 그렇다.) 위 코드에서 어디가 잘못 되었을까? 무엇 때문에 NPE가 발생하는 것일까? 콘솔에서 친절하게 라인까지 알려주고 있다. 31번 째 라인으로 가보자 그냥 board 테이블에 있는 리스트를 페이징해서 가져오는게 전부다. 원인을 몰랐을 땐 DB에서 가져오는게 null인가? 이런 생각을 했었는데.. 하지만 아래 코드에서는 생성한 list를 조작하는 일이 전혀 없다.(list에서 get해서 뭘 가져온다거나) 근데 왜 널포인터일까? 디버거로 찍어보자 boardService가 null이다. 이놈의 객체가 생성 안된거다. BoardController에서 BoardService라는 놈을 생성자 주입해서 쓰려고 하는데 이 객체가 null이..

IT/development 2022.11.23

[springBoot] JPA @Entity에서 @NoArgsConstructor, @AllArgsConstructor, @Builder... 사용 관련 정리

목차 개인 프로젝트 에서 단순 CRUD는 JPA로 구현하려고 많이 하고 있다. 역시 미래의 내가 보기위해 기록한다. 부끄럽지만 java8, JPA를 최근에 사용하게 되어서 @Builder 어노테이션도 처음 써보고 이제 막 적응이 살짝 되가는 중이다.(JPA에서는 엔티티에 setter 사용을 최대한 지양한다.) @Entity에서 필요로 하는 것은 기본 생성자이고 @Builder에서 필요로 하는 것은 모든 필드를 전부 매개변수로 가지고 있는 생성자이다.(값 세팅하기 위해서) 둘 다 생략할 경우 IDE에서 친절하게 아래처럼 에러를 뱉어준다.(엔티티에 기본 생성자 없을 경우엔 컴파일 단계에서 표시) 빌더에 매개변수 생성자 없을 경우 빌드시 표시해준다. Entity에서 @NoArgsConstructor 생략 시 ..

IT/development 2022.11.22

[mybatis] mybatis 동적 쿼리 작성 시 "," 관련

목차 사소할 수 있지만 이유를 몰라서 쿼리 작성 시 에러 때문에 시간을 잡아 먹어서 역시나 미래의 내가 보기위해 기록한다. 예를 들어 위와 같은 쿼리가 있을 때 parameter값에 따라 동적으로 SQL을 생성 시 SELECT문 컬럼 뒤쪽에 ","를 넣으면 문법에러가 발생한다. 넘어온 member_id값이 있으면 , mcm.etc가 붙는 데 만일 위의 쿼리가 아래와 같다면 동적 쿼리를 붙이질 못한다. select m.*, mcm.tag_type, mcm.tag_name, mcm.etc FROM member m LEFT OUTER JOIN member_code_mapping ON m.member_seq = mcm.member_seq LIMIT #{start}, #{length} 이 경우는 넘어온 membe..

IT/development 2022.11.22

[Spring] spring REST API 공부(feat. @RestController)

목차 REST란? 😎 REST란 "Representational State Transfer"의 약자이고 직역하면 대표상태 전송이다. 하나의 URI는 고유한 리소스를 대표하도록 설계된다는 개념인데 솔직히 아직 정확히 이해하지는 못했다. 웹의 모든 리소스에 고유한 URI로 의미부여 한 뒤 HTTP Method를 통해 상태를 주고 받으며 통신하는 방식이라고 이해 했다. 그리고 서버에서 클라이언트로 반환하는 값이 순수한 데이터라는 점 클라이언트가 URI만 봐도 이게 무슨 작업을 의미하는지 알 수 있도록 설계해야 한다. ex)localhost:8080/user가 URI이고 POST으로 서버에 전송한다고 하면 사용자 등록이라고 유추할 수 있다. REST 방식에서는 HTTP Method가 CRUD를 의미한다. 그래서..

IT/development 2022.11.22

[springBoot] 유효성 검증(feat. @Valid, Validated)

목차 SpringBoot 유효성 검증 😄 클라이언트에서 넘어온 값들에 대한 유효성 검증이 필요한데 if(id != null || id != ""...) 이렇게 if문으로 유효성 체크를 하기 싫어서 자바나 스프링에서 지원하는 좋은게 어디 없나 보다가 구글링을 하고 @Valid와 @Validated를 알게되어서 적용을 해봤고 이를 기록한다. 난 "", " ", null 이렇게 3개만 체크하면 되는 부분이었다. 결론은 스프링부트에선 @Valid와 @Validated 2개를 사용해서 간단한 유효성 체크를 할 수 있음 @Valid 🥰 @Valid는 JSR-303 Bean Validator를 이용해서 유효성을 체크하는 어노테이션임(자바 표준 스펙) 사용법 스프링부트 버전에 따른 의존성 추가 사용하는 스프링 부트 버..

IT/development 2022.11.22

[mybatis] mybatis parameter 여러개 전달

목차예를 들어 String타입의 "status"와 Long타입의 no, 2개의 parameter값을 받아서 테이블 업데이트 하려는 로직이 있을 시 VO째로 넘기기엔 뭔가 비효율적이고 다른사람이 코드를 봤을 때도 직관적이지 않아 보였다.물론 추후에 넘기는 parameter값이 추가될 경우엔 VO째로 넘기는게 확장성이 있겠지만 이 기능은 그런게 아니었다.그래서 구글링 하다가 역시나 방법을 찾아서 미래의 내가 보기위해 기록한다.1. HashMap 이용 😄Controller에서 HashMap에 담아서 넘기는 방법ControllerHashMap에 parameter값 담아서 전달HashMap param = new HashMap();param.put("no", no);param.put("status", status..

IT/development 2022.11.22

[mybatis] 상세 조회 시 복수값 추가 조회(feat. vo & map)

목차 상세 조회 시 복수값 추가 조회 😗 기존 상세조회 API에서 상세 조회 시 해시태그와 같은 복수값을 추가로 조회해야 되는 경우가 생겼다. 가져와야 되는 필드값은 2개밖에 안되므로 추가로 vo를 만들고 싶지 않아 아래처럼 수정했다. Controller 기존에는 Controller에서 return으로 VO로만 받았던 걸 map으로 받도록 변경, VO결과와 tag리스트 결과를 map에 담아서 최종적으로 return /** * 상세 * @param * @param * @return */ @Operation(summary = "멤버 상세 조회", description = "멤버를 상세 조회한다.") @Parameters({@Parameter(name = "mem_no", description = "회원 일련..

IT/development 2022.11.22

[JavaScript] Ajax 결과값 변수 저장

목차 미래의 나를 위해 기록을 남김 😄 ajax를 통해 얻어온 결과를 저장하려면 ajax시 옵션에 async: false를 줘서 동기식으로 처리하도록 변경해야 한다. 기본값은 true 아니면 undefined로 return 된다. function duplicateCheck(menuCode) { let duplicate_result; $.ajax({ url : '/admin/menu/duplicateCheck', async: false, type : 'post', data : {'menuCode': menuCode}, success: function (data) { // alert("data : " + data); duplicate_result = data; } }); return duplicate_res..

IT/development 2022.11.22

[JavaScript] submit control(feat. onsubmit)

목차 JavaScript onsubmit 😄 미래의 내가 보기 위해 작성 화면에서 submit을 컨트롤 해야 할 경우가 있다. 예를 들면 입력값을 입력 안하면 못 넘어가게 한다거나.. 여러 방법이 있겠지만 form에 onsubmit 옵션을 주고 함수를 지정해 주면 submit 시 무조건 해당 함수를 호출하고 submit하게 된다. 그리고 return functionName(); 을 주게 되면 해당 함수의 return값이 false인 경우 submit이 안된다. 그래서 아래 예시처럼 조건에 따라 submit을 하거나 막을 수 있다. 아래 예시는 제목을 입력 안할 경우 submit이 안된다.(너무 단순한 유효성 체크이지만..) 예시 코드 제목: 내용: 작성자: 전송 이를 이용해서 다양하게 응용이 가능하다.

IT/development 2022.11.22
반응형