본문 바로가기

Java21

[Mybatis] 마이바티스 foreach를 이용하여 IN절 처리하기 안녕하세요! 오늘은 Mybatis에서 쿼리를 작성하다 보면 IN절을 처리할 때 수월하게 처리할 수 있는 방법에 대해 정리해보려고 합니다. MyBatis는 동적 SQL을 지원하여 조건에 따라 쿼리를 유연하게 처리할 수 있기 때문에, IN 절을 처리하는 데에도 편리한 foreach 태그를 활용할 수 있습니다. IN 절은 여러 개의 값을 비교하거나 조회하는데 사용되는데, MyBatis의 foreach 태그를 활용하면 해당 작업을 간편하게 처리할 수 있습니다. 이제 MyBatis의 foreach 태그를 활용하여 IN 절을 보다 수월하게 다루는 방법을 정리해 보겠습니다. 많은 도움이 되기를 바랍니다! 1. Mybatis mapper.xml 정의 SELECT * FROM Member WHERE MemberId IN.. 2023. 7. 20.
[Spring Boot] 리액트 네이티브 bcrypt를 이용해서 암호화 검증하기 안녕하세요! 오늘은 이전에 포스팅한 "리액트네이티브로 bcrypt 암호화하기"에 이어서, 서버 측(Spring Boot)에서 암호화된 입력값을 받아 검증하는 방법에 대해 알아보려고 합니다. 일반적으로 JSP, Thymeleaf와 같은 경우 Spring Security를 사용하여 로그인 검증을 처리하는 것이 간단하지만, 최근에는 frontend와 backend를 분리한 SPA(Single-Page Application)와 같은 개발 패턴이 많이 사용됩니다. 이런 경우에는 로그인 정보를 암호화하여 서버 측으로 전달해야 합니다. 물론, JSP나 Thymeleaf와 같은 방식에서도 상황에 따라 암호화 처리를 하여 전달할 수도 있습니다. 이제 Spring Boot에서 bcrypt를 사용하여 로그인 검증을 어떻게 .. 2023. 7. 10.
[Mybatis] 마이바티스 컬럼 자동 매핑하기 (auto mapping) 안녕하세요. 오늘은 마이바티스에서 칼럼 자동 매핑 처리하는 방법에 대해서 포스팅하려고 합니다. 마이바티스를 개발하면서 resultType을 이용해서 결과 데이터를 map이나 class로 매핑시켜야 하는데, 간혹 resultMap을 이용해서 결과 데이터를 반환해야 하는 경우가 있습니다. 그런 상황에서 칼럼 수가 많으면 매핑시켜줘야 하는 칼럼도 많아 생각보다 작업시간이 길어지는 경우가 있습니다. 그럴 때 간단하게 자동 매핑 처리를 해서 결과 데이터를 반환할 수 있도록 예제를 통해서 정리해 보도록 하겠습니다. resultType과 resultMap resultType: 칼럼 정보를 작성한 타입에 맞는 클래스에 자동 매핑 resultMap: 칼럼 정보를 xml에 정의한 규칙에 의해 칼럼 매핑 1. resultM.. 2023. 2. 21.
[Mybatis] 마이바티스 동적 쿼리 trim 사용하기 안녕하세요. 오늘은 마이바티스에서 일반 쿼리문을 동적 쿼리문으로 사용할 수 있도록 도와주는 기능인 trim 요소에 대해서 포스팅하려고 합니다. trim 요소는 사용하고자 하는 쿼리에서 접두어와 접미어를 원하는 내용으로 바꿔주는 기능을 합니다. 정적인 쿼리를 사용하는 경우에는 크게 상관이 없지만, 파라미터를 받아서 동적으로 처리하는 경우에 애매한 경우가 종종 있습니다. 그럴 때 trim을 사용한다면 아주 간단하게 해결할 수 있습니다. 어떤 상황에서 trim을 사용하면 되는지 예제를 통해서 알아보도록 하겠습니다. 1. update 문 예제 UPDATE Member SET Age = #{age}, EmpNo = #{empNo}, Name = #{name} WHERE Idx = #{idx} 위의 예제 소스 코드.. 2023. 2. 20.
[Mybatis] 마이바티스 where 태그 사용하기 안녕하세요. 오늘은 마이바티스에서 where 태그를 사용하는 방법에 대해서 포스팅하려고 합니다. where 태그를 사용하는 이유는 마이바티스에서 쿼리를 작성하다 보면 where절에서 동적으로 처리해야 하는 경우가 있습니다. 파라미터 값이 있는 경우에만 조건을 추가하는 경우나 where 1=1 조건을 사용하지 않고 동적으로 처리하는 경우 등이 해당됩니다. 그렇다면 where 태그는 어떻게 사용하는 것인지 예제를 통해서 알아보도록 하겠습니다. :) 1. where 태그를 사용하지 않는 경우 SELECT Idx, Name, EmpNo, Age FROM Member WHERE Age = #{age} AND EmpNo = #{empNo} AND Name = #{name} 위의 예제 소스 코드는 일반적인 방법으로 .. 2023. 2. 18.
[Mybatis] 마이바티스 sql과 include 사용하기 안녕하세요. 오늘은 마이바티스에서 태그와 태그를 사용하는 방법에 대해 포스팅하려고 합니다. 태그와 태그를 사용하는 경우는 공통 sql를 만들어서 필요한 쿼리 영역에 추가하여 재사용성을 올릴 때 사용을 합니다. 보통은 유사한 쿼리마다 쿼리를 생성하게 되는데 하나의 xml이나 유사한 xml에서 겹치는 부분의 쿼리를 많이 사용하게 되는 경우가 있습니다. 가독성은 쿼리별로 작성하는 것이 좋지만 그만큼 재사용성이 떨어지기 때문에 큰 무리가 없다면 위의 태그들을 활용해서 처리해 보는 것도 좋을 것 같습니다. 그러면 태그와 태그를 어떻게 사용하는지 예제를 통해 알아보도록 하겠습니다. 과 : 공통으로 사용할 쿼리 일부분을 태그 내에 넣어두는 요소 : 원하는 태그를 연동하고자 하는 영역에서 include를 시켜주는 요소.. 2023. 2. 17.
Mybatis '요소 콘텐츠는 올바른 형식의 문자 데이터 또는 마크업으로 구성되어야 합니다' 에러 해결하기 안녕하세요. 오늘은 Mybatis의 문법 에러에 대해 포스팅을 하려고 합니다. 에러 내용은 '요소 콘텐츠는 올바른 형식의 문자 데이터 또는 마크업으로 구성되어야 합니다'이며, xml을 작성하다 보면 sql에 부등호를 넣어야 하는 경우에 발생하는 에러입니다. 그런데 sql문을 작성하다 보면 비교 조건을 넣을 때 부등호를 넣어야 하는데 위와 같은 에러가 왜 발생하는 걸까요? 부등호를 넣었을 때 왜 에러가 발생하는 건지 간단한 예제를 통해서 알아보도록 하겠습니다. 1. 에러 발생 예시 SELECT Idx , Name, EmpNo, Age FROM Member WHERE Age < #{age} 위의 예시 코드를 보게 되면 테이블 목록을 호출하는 간단한 예제입니다. 쿼리에서 비교문이 있는 WHERE절을 추가하였고.. 2023. 2. 11.
자바 String StringBuffer StringBuilder 비교, 차이점 알아보기! 안녕하세요. 오늘은 자바에서 문자열 연산에 사용되는 String class에 대해 정리해 보려고 합니다. String 연산에 사용되는 class는 크게 String, StringBuffer, StringBuilder 이렇게 세 종류가 있습니다. 결괏값만 두고 봤을 땐 차이가 없지만 내부적으로 처리하는 과정이 달라 서비스의 성능까지 영향이 있기 때문에 차이점을 알고 사용하신다면 자바 개발 업무에 많은 도움이 되실 거예요! 그렇다면 각 class별로 어떤 차이점과 특징이 있는지 간단한 예제를 통해서 하나씩 알아보겠습니다. 불변성과 가변성 불변성 : immutable, 값이 할당된 공간이 변하지 않는 특성을 의미 가변성 : mutable, 값이 할당된 공간이 변하는 특성을 의미 들어가기 전에 먼저 알아야 할 .. 2023. 1. 29.
자바 천단위 콤마 찍기 (addComma) 안녕하세요. 오늘은 자바에서 숫자 천 단위 콤마 찍는 방법을 포스팅하려고 합니다. 숫자에서 천 단위 콤마를 찍는 이유는 결과 데이터를 볼 때 가독성이 좋게 하려는 이유가 큽니다. 물론 다른 이유가 있을 수도 있습니다! 천 단위 기준으로 콤마를 찍어주는 방법은 간단하지만 이러한 간단한 스킬을 많이 가지고 있으면 개발 업무를 볼 때 많은 도움이 됩니다. :) 그럼 예제를 통해서 하나씩 배워보도록 하겠습니다! 1. long 타입 천단위 콤마 public static void main(String[] args) { // 1000000 콤마 추가 System.out.println(addComma(1000000)); } public static String addComma (long num) { // Decimal.. 2023. 1. 28.
Spring Boot 매핑 어노테이션 종류 알아보기 (@GetMapping, @PostMapping) 안녕하세요. 오늘은 Spring, Spring Boot controller 영역에서 많이 사용하는 mapping 어노테이션에 대해 정리한 내용을 포스팅하려고 합니다. spring의 버전이 4.3 이상부터 지원되는 기능인 GetMapping, PostMapping, PutMapping, DeleteMapping 네 종류에 대해 정리해 봤습니다. 요즘은 frontend의 다양한 기술이 많이 나오면서 spring boot의 간단한 backend를 많이 사용하게 되는데요. spring boot를 간단하게 api로 많이 사용하기 때문에 mapping 어노테이션의 종류를 정리해 보는 것도 많은 도움일 될 것 같습니다. :) 그럼 어노테이션별로 어떤 특징이 있는지 알아보겠습니다. @GetMapping @GetMapp.. 2023. 1. 27.
728x90