[MySQL] 문자열 합치기, 문자열 자르기, 문자열 바꾸기
2023. 6. 9. 20:29
프로그래밍/SQL
MySQL 문자열 합치기 - concat() concat(str1, str2, ...) 로 사용 -- 권정열(41) 로 조회 select concat(name, '(', age, ')') from member; MySQL 문자열 자르기 - substring() substring(str, pos, len) 로 사용. 여기서 len은 옵션으로 설정하지 않으면 끝까지 -- Java 출력 select substring('Javascript', 1, 4); -- Brand 출력 select substring('NoBrand', 3); MySQL 문자열 바꾸기 - replace() replace(str, from_str, to_str) -- 다음주는 쉬는날이 많기에, 다음주에 여행을 갈 계획이다. 출력 select..
[VSCode] 자주 사용하는 단축키
2023. 6. 8. 20:52
IDE/VSCode
주석 Ctrl + / : 한줄 or 블록 주석 처리 / 해제 (파일 확장자명에 따라 주석 형태는 달라짐) Ctrl + K, Ctrl + C : 한줄 or 블록 주석 처리 / 해제 (파일 확장자명에 따라 주석 형태는 달라짐) Ctrl + K, Ctrl + U : 주석 해제 파일 및 에디터 단축키 Ctrl + N : 새 파일 열기 Ctrl + O : 기존 파일 열기 Ctrl + S : 파일 저장 Ctrl + Shift + S : 다른 이름으로 저장 Ctrl + W : 파일 닫기 Ctrl + Shift + T : 이전에 닫았던 파일 다시 열기 Ctrl + L : 현재 라인 블록처리 Ctrl + Alt + 위(↑) or 아래(↓) 화살표 : 멀티 커서 토글 (매우 유용함) Ctrl + D : 한줄씩 멀티 커서 ..
[Java] JDK와 JRE의 차이점
2023. 6. 7. 20:22
프로그래밍/JAVA
JDK와 JRE JDK는 JRE를 포함하고 있으며, JRE는 JDK의 일부 따라서 개발자는 JDK를 다운받으면 됨 JDK(Java Development Kit) Java 개발 도구 모음으로, Java 개발에 필요한 모든 도구와 라이브러리를 포함함 JDK는 JRE를 포함 주요 구성 요소 컴파일러(Compiler): Java 소스 코드를 컴파일하여 기계어로 변환하는 도구. 컴파일된 코드는 JVM(Java Virtual Machine)에서 실행. 디버거(Debugger): 애플리케이션의 실행 중에 버그를 찾고 수정하는 도구 개발 도구(Development Tools): Java 개발에 도움이 되는 다양한 도구들이 포함. 예를 들어, 개발 환경을 설정하는 도구, 성능 분석 도구, 문서화 도구 등. 라이브러리(L..
[Spring] VO, DAO, DTO 간단한 개념 정리
2023. 6. 5. 20:40
프로그래밍/Spring
VO, DAO, DTO 비교 VO는 데이터를 담는 불변 클래스로 사용되고, DTO는 데이터 전송을 위한 가변 클래스로 사용되며, DAO는 데이터 액세스를 추상화하고 실제 액세스를 처리하는 인터페이스와 구현체를 제공함 VO(Value Object) 값 오브젝트로 비즈니스 로직을 포함하지 않고 데이터를 담는 용도로 사용 일반적으로 변경 불가능한(immutable) 객체로 설계하며, 객체의 상태를 변경하는 대신 새로운 객체를 생성하여 전달 read-Only 특징 DTO와 유사하지만 DTO는 setter를 가지고 있으며, 주로 데이터베이스의 엔티티와 매핑되는 불변 클래스로 사용됨 DAO(Data Access Object) 데이터베이스의 data에 접근하기 위한 객체입니다. DAO는 데이터 액세스를 위한 CRUD..
[MyBatis] Cause: java.sql.SQLDataException: Cannot determine value type from string 해결
2023. 6. 2. 20:04
프로그래밍/Mybatis
Cause: java.sql.SQLDataException: Cannot determine value type from string 해결 dto에 select 절을 받아줄 생성자가 없어서 발생하는 문제 해결 방법 MyBatis select절에 해당하는 생성자를 생성해주거나 @NoArgsConstructor 혹은 @AllArgsConstructor 를 적절하게 사용하여 생성자를 자동으로 생성해주자 @NoArgsConstructor @AllArgsConstructor public class MyClassDto { // 필드, 메서드 등 클래스의 내용 } 어노테이션에 대한 자세한 설명은 이전 글 참고
[Java] @NoArgsConstructor @AllArgsConstructor 비교
2023. 6. 1. 20:51
프로그래밍/JAVA
@NoArgsConstructor @AllArgsConstructor 비교 롬복(Lombok) 라이브러리에서 제공하는 어노테이션 개발자는 생성자 관련 코드를 직접 작성하지 않고도 편리하게 객체를 생성하고 초기화할 수 있음 @NoArgsConstructor 매개변수가 없는 기본 생성자를 자동으로 생성 이를 통해 객체를 생성할 때 매개변수를 전달하지 않고도 기본 생성자를 사용할 수 있음 @NoArgsConstructor public class MyClass { // 필드, 메서드 등 클래스의 내용 } @AllArgsConstructor 모든 필드를 인자로 받는 생성자를 자동으로 생성 이를 통해 객체를 생성하고 필드 값을 한 번에 초기화할 수 있음 @AllArgsConstructor public class M..
[Java] 컴파일 에러와 런타임 에러
2023. 5. 31. 20:57
프로그래밍/JAVA
컴파일 에러와 런타임 에러 컴파일 에러는 프로그래밍 단계에서 발생하며, 컴파일러가 코드를 분석할 때 확인 가능 대부분의 통합 개발 환경 (IDE)에서는 컴파일 에러를 강조 표시하고 오류 메시지를 제공하여 실시간으로 확인할 수 있음 반면, 런타임 에러는 프로그램이 실행 중에 발생하므로 디버깅 도구와 예외 처리를 통해 해결해야 함 런타임 에러는 프로그램의 실행 상태, 데이터 입력, 외부 환경 등 다양한 요소에 따라 발생할 수 있음 컴파일 에러 (Compile Error) 컴파일러는 소스 코드를 분석하고 변환하는 과정에서 발생하는 에러 일반적으로 문법 오류, 타입 불일치, 잘못된 메서드 사용 등으로 인해 발생 컴파일 에러는 소스 코드를 컴파일하기 전에 발생하며, 프로그램이 실행되기 전에 수정되어야 함 컴파일 ..
[Mybatis] #{}와 ${} 차이
2023. 5. 30. 20:28
프로그래밍/Mybatis
Mybatis #{}와 ${} 표기법 일반적으로 #{}을 사용하여 값을 전달하고, ${}을 사용하여 동적인 SQL을 작성하는 것이 안전하고 권장되는 방법임 ${}의 경우 사용자 입력 값을 포함할 때 주의해야 하며, 반드시 값의 이스케이프와 SQL Injection 방어를 수동으로 처리해야 함 #{} 표기법 SELECT * FROM users WHERE id = #{userId} #{} 안에는 자바 객체의 프로퍼티 이름이나 매개변수 이름 적음 #{} 안에 작성된 값은 자동으로 PreparedStatement의 파라미터로 설정되며, 자동으로 값의 타입에 맞게 변환 #{}은 SQL Injection 공격을 방지하기 위해 내부적으로 값을 이스케이프(escape)하여 처리함 ${} 표기법 SELECT * FROM..