전체 글 13

[SpringBoot] JPA 카멜케이스 -> 스네이크 케이스 자동 변환 변경하기

@Entity 또는 @Column 에서 카멜케이스를 사용할 경우 JPA가 스네이크 케이스로 변경해서 쿼리 날림. @JoinColumn(name = "userId") // 스네이크 케이스인 user_id 로 변경되어 쿼리가 날아감 properties에서 설정을 아래와 같이 바꿔주면 입력한 카멜케이스 그대로 적용됨 # 카멜케이스 언더바 자동변경 방지 spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

SpringBoot 2022.09.26

[MySQL] Safe Mode 해제 (Error Code : 1175 해결방법)

delete from user where age = 0; delete from user where age = 0 Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect. 0.000 sec 테이블에서 키값을 이용한 하나의 레코드만을 update, delete하도록 설정되어 있는데, 다수의 레코드를 update나 delete하는 sql명령어가 실행되어 문제가 발생함 해결방법은 set sql_safe_upd..

카테고리 없음 2022.09.13

Spring Interceptor

Interceptor에 대한 내용은 https://kingjakeu.github.io/springboot/2021/02/02/interceptor/ 에서 참고하였음. 프로젝트 진행 중, 로그인 권한이 필요한 페이지에 접근하기 위해 Interceptor 를 사용하기로 했다. HandlerInterceptorAdapter를 상속받은 Interceptor클래스를 만들고, 전처리기에 해당하는 perHandle()메서드를 구현했다. 1. 세션에 로그인 정보가 있다면 로그인 된 상태이므로, 접근을 허용한다. 2. 세션에 로그인 정보가 없다면, 로그인 페이지로 이동하는데, 이때 이동하기 전에 이전 URL 경로를 세션에 저장하고 로그인 성공 시, Interceptor에서 저장한 이전 URL이 존재한다면 그 URL로 이..

Spring 2022.07.09

JAVA의 특징

1. 운영체제에 독립적이다. 자바의 개발 환경과 배포환경이 다를 경우, 프로그램을 다시 컴파일 할 필요 없이 실행가능함을 의미한다. 바로 자바가 JVM(Java Virtual Machine) 위에서 돌아가기 때문인데, JVM에서 별도의 Java Compiler를 통해 사용자의 코드를 Byte 코드로 변환한다. 따라서 자바로 작성된 프로그램은 JVM이 설치되어 있는 운영체제에서 모두 종류와 상관없이 동일하게 동작한다. 2. 객체지향언어 프로그래밍(OOP)이다. 객체지향프로그래밍의 대표적 특징에는 상속, 캡슐화(은닉), 다형성, 추상화가 있다. 이 4가지 특징을 잘 활용하면 코드의 재사용성을 증가시키고 유지보수를 용이하게 만들 수 있다. 3. 자동 메모리 관리 C/C++ 은 메모리에 생성된 객체를 제거하기 ..

Java 2022.06.29

[JavaScript] ajax으로 form 데이터 controller로 보내기

ajax을 사용하여 form 데이터를 통째로 컨트롤러에 보낼 때는 from 엘리먼트를 잡아서 제이쿼리에서 제공하는 serialize() 함수를 사용해주면 한번에 전송 가능한 data로 간편하게 만들어준다. document.getElementById("editBtn").onclick = function(){ $.ajax({ type: "post", url:"./accountInfo_Edit", data: $("#editForm").serialize(), success: function(result){ if(result){ alert("정상적으로 변경되었습니다."); } },error: function(){ console.log("실패"); } }); };

Java Script 2022.06.20

[MyBatis] 마이바티스 foreach 문법 정리

collection : 전달받은 인자. List or Array 형태만 가능 item : 전달받은 인자 값을 alias 명으로 대체 open : 구문이 시작될때 삽입할 문자열 close : 구문이 종료될때 삽입할 문자열 separator : 반복 되는 사이에 출력할 문자열 index : 반복될때마다 0부터 순차적으로 증가하는 구문번호 1. 배열 (Array) - 직접 배열을 넘겼을 때 collection="array" item="Alias " open="(" separator="," close=")" index = "i"> - Map에 배열을 담아 넘겼을 때 collection="Array 파라미터 이름" item="Alias " open="(" separator="," close=")" index = ..

Spring 2022.06.14

[JavaScript] 업로드 이미지 미리보기 구현 (단일/다중)

1. 단일 이미지 미리보기 input 태그에 type = file function imageChange(event){ let img = document.createElement("img"); const reader = new FileReader(); reader.onload = function(event){ img.setAttribute("src", event.target.result); } reader.readAsDataURL(event.target.files[0]); document.querySelector("#imageContainer").appendChild(img); } 2. 다중 이미지 미리보기 input 태그에 type = file , multiple 속성 추가 function imageCh..

Java Script 2022.05.28

Spring Summernote 이미지 업로드

# JavaScripy 멀티파트 데이터에 담아 파일을 컨트롤러로 전송하고 컨트롤러는 uploader 클래스를 통해 URL을 반환한다. 반환된 URL로 썸머노트에서 자체적으로 제공하는 기능이 img 태그를 만들어준다. $(function () { $('#faqContent').summernote( { callbacks: { onImageUpload: function (files) { uploadSummernoteImageFile(files[0], this); }, onPaste: function (e) { var clipboardData = e.originalEvent.clipboardData; if (clipboardData && clipboardData.items && clipboardData.item..

프로젝트 2022.01.24

다중 파일 업로드 AJAX 구현

root-context.xml multipartResolver 추가 servlet-context.xml 로컬 저장소 매핑 파일(이미지)를 입력받을 form에는 반드시 enctype="multipart/form-data" 설정을 해주어야 한다. 기존 file input의 display를 none으로 두고, label의 for 속성을 사용했기때문에 업로드된 파일명을 구해서 목록으로 만들어 무엇을 업로드했는지 기존 div 밑에 append 해준다. 업로드 될 때마다 해당 name으로 덮어씌워질테니까 formData 를 만들어서 name에 append를 해주어 file List를 만들것이다. 하지만 잘못 올린 파일을 삭제할 경우에 formData 에서 같은 name을 가진 file List에서 특정값만 삭제하는..

프로젝트 2022.01.19