Back-End/Spring Legacy
-
[Spring] MyBatis의 resultMap 살펴보기Back-End/Spring Legacy 2023. 5. 24. 14:20
📑 resultMap이란? resultMap이란 myBatis에서 제공하는 자동 매핑으로 해결이 어려운 경우를 위해 구조를 설계할 수 있도록 만들어진 구조이다. 📑 클래스 객체 필드명과 테이블 컬럼명이 다를 때 클래스 객체가 다음과 같을 때 @Getter @Setter public class User { private int id; private String username; private String hashedPassword; } map 형태로 값을 매핑해서 조회하는 구문이 있다. select id, username, hashedPassword from some_table where id = #{id} 만약 테이블 컬럼명과 클래스 객체의 필드명이 동일할 경우 문제 없이 값이 매핑된다. 하지만 만약 쿼..
-
[6-ch21~22 Spring ] 파일 업로드 방식 ( 중복처리, 섬네일 ,, )Back-End/Spring Legacy 2023. 5. 10. 16:50
일단 파일 업로드 방식을 알아보기전 c드라이브 밑에 uploadBook 폴더와 임시 업로드 파일을 저장할 temp 폴더를 생성해둔다. 첨부파일을 서버에 전송하는 방식은 크게 태그를 이용해 업로드하는 방식과 Ajax를 이용하는 방식으로 나눠볼 수 있다. 📌 태그를 이용하는 방식 : 브라우저의 제한이 없어야 하는 경우 사용 - 일반적으로 페이지 이동과 동시에 첨부파일을 업로드하는 방식 - 을 이용해 화면의 이동 없이 첨부파일을 처리하는 방식 📌 Ajax를 이용하는 방식 : 첨부파일을 별도로 처리하는 방식 - 을 이용하고 Ajax로 처리하는 방식 - HTML5의 Drag And Drop 기능이나 jQuery 라이브러리를 이용해서 처리하는 방식 코드로보는 스프링 웹 프로젝트 책에서는 Ajax를 위주로 처리하였다..
-
[MyBatis] 동적 쿼리 trim 문법 알아보기Back-End/Spring Legacy 2023. 4. 17. 08:41
은 하위에서 만들어지는 sql 문을 조사하여 앞 쪽에 추가적인 sql을 넣을 수 있다. prefix, suffix, prefixOverrides, suffixOverrides 속성을 지정할 수 있다. 📑 prefix 실행될 쿼리의 문 안 쿼리 가장 앞에 붙여준다. UPDATE board username=#{username},password=#{password} 📑 prefixOverrides 실행될 쿼리의 문 안 쿼리 가장 앞에 해당하는 문자들이 있으면 자동으로 지워준다. SELECT * FROM board WHERE id = #{id} OR TT LIKE '%' || #{searchContent} || '%' 📑 suffix 실행될 쿼리의 문 안 쿼리 가장 뒤에 붙여준다. 📑 suffixOverride..
-
[Spring] Log4j2 환경설정 , (+ log.info 에러 )Back-End/Spring Legacy 2023. 4. 4. 16:39
STS 플러그인을 통해 생성된 프로젝트는 로그를 처리하기 위해 Log4j라이브러리를 이용하는데 2021년 Log4j 관련 보안 문제가 이슈화되면서 가능하면 Log4j대신 Log4j2를 이용하는 것을 권장하고 있다. Spring Legacy Project를 생성하면 프로젝트에 존재하는 log4j.xml 파일은 Log4j를 위한 설정이므로 이를 제거한다. 📑 Log4j2 라이브러리 추가 pom.xml에서 Log4j와 관련된 항목을 찾아서 삭제한다. 삭제할때 slf4j 관련 라이브러리도 같이 삭제하도록 한다. 삭제 후 아래 라이브러리들을 추가해준다. org.apache.logging.log4j log4j-api 2.18.0 org.apache.logging.log4j log4j-core 2.18.0 org.a..
-
[jsp] <%@ include%>와 jsp:include 차이Back-End/Spring Legacy 2022. 11. 30. 16:17
📑 jsp:include 서버측 include가 아닌 클라이언트의 include라고 생각하면 된다. 즉) 출력 결과만(html코드)을 include한다. include 되는 페이지와 변수를 같이 사용할 수 없다. 📌 속성 page - 포함시키고자 하는 문서의 위치를 명시한다. - 상대경로뿐만 아니라 절대 경로도 가능하다. - 서블릿 컨테이너에 따라 HTML 페이지는 안 될 수도 있다. - GET 방식으로 파라미터를 전달 할 수 없다. - 동적으로 페이지 할당이 가능하다. 가 가능하다. flush는 문서의 출력 결과를 항상 버퍼내에서 갱신 하라는 의미이다. a.jsp 코드 a.jsp 결과에 b.jsp가 실행된 결과가 include 된다. 즉 따로따로 실행된 후 그 결과만을 가지고 include 한다. 📑 ..
-
[Spring MyBatis] selectKey 사용하기Back-End/Spring Legacy 2022. 11. 17. 09:57
MyBatis에서 selectKey를 사용하면 사전 어떤 키 값을 가져와서 증가시켜 입력하거나 혹은 입력후에 증가된 키 값을 받아올 수 있다. 형식은 아래와 같은데 하나씩 기능들을 적어보려 한다. 📌 keyProperty : selectKey 구문의 결과가 셋팅될 대상 프로퍼티 📌 keyColumn : 리턴되는 결과셋의 칼럼명은 프로퍼티에 일치한다. 여러개의 칼럼을 사용한다면 칼럼명의 목록은 콤마를 사용해서 구분한다. 📌 resultType : 결과의 타입 📌 order : BEFORE, AFTER을 셋팅할 수 있다. BEFORE로 설정하면 키를 먼저 조회하고 그 값을 keyProperty에 세팅한 뒤 insert 구문을 실행한다. 만약 AFTER로 설정하면 insert 구문을 실행한 뒤 seleceKe..
-
[MyBatis] resultType 객체 별칭(alias) 관리Back-End/Spring Legacy 2022. 11. 16. 11:12
Mapper.xml에서 쿼리문을 통해 값을 받아올 때 resultType을 아래와 같이 패키지명 그대로 사용할 수 있고 따로 별칭을 정해 resultType="aa" 이런식으로 작성할 수 있다. 그럼 어디서 설정해야할까? 그 경로를 따라가보자. 📌 1. mybatis-config.xml과 같이 설정 파일을 하나 만든다. 위의 코드와 같이 태그 안에 aliase로 지정할 값들을 넣어주면 되는 형태이다. type은 패키지 명, 즉 클래스 경로를 입력하면 되고 alias에 지정하고 싶은 별칭을 입력한다. 📌 2. application.properties에 설정 경로를 적어준다. 위에서 중요한 코드는 바로 이 코드일 것이다. 우리가 alias를 설정해둔 mybatis-mysql-config.xml 경로를 에 p..
-
[Spring Framework] 정의와 특징 ( DI, IoC, AOP)Back-End/Spring Legacy 2022. 9. 20. 10:51
스프링프레임워크 (Spring Framework) : 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로서 스프링(Spring)이라고 불린다. 동적인 웹 사이트 개발하기 위한 여러가지 서비스를 제공한다. 스프링 프레임워크란? 1. 자바(JAVA) 엔터프라이즈 개발을 위한 오픈소스 애플리케이션 프레임워크이다. 2. 종속 객체를 생성해주고, 조립할 수 있는 프레임워크이다. 3. 자바 SE로 된 자바 객체(POJO)를 자바 EE에 의존적이지 않게 연결해준다. 더보기 - JavaSE (Standarad Edition) : 가장 기본이 되는 표준 에디션으로 JDBC, GUI, 네트워크 등 각종 API를 이용해 개발이 가능하다. - JavaEE(Enterprise Edition) : Java SE 플랫폼 위에 구..