개발공작소
728x90
article thumbnail
[MyBatis] ${ }으로 테이블명을 가져올 때 생기는 구문오류 해결방법 :: 숫자로 시작하는 테이블명 구문오류
MyBatis 2022. 8. 22. 12:35

테이블명이 숫자로 시작하는 경우, 구문오류 발생? 기능이 제대로 작동하지 않는다는 연락을 받고, 로그를 확인해보니 다음과 같은 에러가 발생했다. 위의 이미지는 DBeaver에서 실제 일어난 에러와 같이 에러나 나도록 한 쿼리문이다. 왜 이런 에러가 떨어지는건지 찾아보니, 아이디의 첫문자가 숫자로 시작하는 사용자의 계정에서만 공통적으로 쿼리문에서 에러가 발생한다는 것을 알게 되었다. 그래서 해당 쿼리문을 보니 다음과 같이 작성되어 있었다. 오류가 발생한 샘플쿼리 SELECT id, name FROM ${schema_name}.${table_name} 여기서 ${schema_name}은 스키마명일테고, 에러나 나는 부분은 ${table_name} 이 부근인데, 현재 로직은 사용자의 아이디를 테이블명인 ${t..

[MyBatis] 마이바티스에서 샵(#)과 달러($)의 차이점에 대하여
MyBatis 2022. 8. 20. 14:46

개발을 하면서 항상 #만 써서 $가 있는 줄 몰랐던 신입이 시절에 선임이 $가 있다는 것도 알려줬다. 둘의 차이점을 까먹은 김에 정리해본다.. 마이바티스에서의 #{ }과 ${ }의 차이 1. #{ }의 특징 #{ }으로 감싸면 자동으로 파라매터 형태가 된다. 예들 들어 abc라는 값을 가져왔다고 하면 'abc'와 같이 따옴표가 붙고, 123이라는 값을 가져왔다고 한다면 따옴표가 붙지 않은 123과 같이 된다. 1. 가져온 파라메터의 데이터 타입에 따라 따옴표(')가 붙기도 하고 붙지 않기도 한다. ( abc => 'abc' / 123 => 123 ) 2. 주로 조건절(where)에서 컬럼값을 비교할때 자주 사용하게 된다. 샘플코드 SELECT id FROM test_table WHERE name = #{..

article thumbnail
[Mybatis] 마이바티스 forEach문법을 활용한 쿼리 반복 실행에 대해 알아보자.
MyBatis 2022. 5. 25. 12:01

쿼리문을 작성하다보면 반복적인 작업을 해야 할 때가 있다. 예를 들면 테이블 안의 데이터와 하나하나 비교를 한다던가. 파라메터 값을 포함하고 있는 데이터를 갖고 오고 싶을 때 마이바티스의 forEach문법을 사용하면 java의 for과 같이 반복적으로 쿼리를 작성 할 수 있다. 바로 알아보도록 하자. 기본문법 [실제 실행할 쿼리] 간단하다. 그냥 forEach 태그에 필요 옵션들을 추가해 사용하면 된다. 각 옵션에 대한 설명은 다음과 같다. collection : 전달받은 인자/변수 즉, list 같은 배열 형식의 변수 item : 배열에서의 값 하나하나를 의미한다. 즉 value값을 의미 index : 현재 for문을 돌고있는 index를 의미한다.(0,1,2,3, ...) open : foreach문..

article thumbnail
[MyBatis] 마이바티스 parameterType이 String인 데이터 사용하기 ( String을 <if> 에서 사용 )
MyBatis 2022. 5. 13. 21:04

요즘 java 쪽을 아예 공부안하니, 계속 까먹어서 정리 하려고 한다. 마이바티스에서 parameterType을 보통 객체로 받아오는 일이 많은데, 데이터가 하나라면 String이나 int와 같이 받아올 일도 있을 것이다. 아래처럼 이제 이렇게 받아온 녀석들을 어떻게 쓸까? 아무렇게나 써도 된다. 보통은 카멜케이스로 해서 컬럼명과 맞추는 게 기본이지만 아무렇게나 써도 된다. 아래를 보자. SELECT BEG_DE FROM DBTEST.SM_POPUP WHERE POP_SUB = #{popSub} WHERE POP_SUB = #{value} WHERE POP_SUB = #{iLoveMochi} 이렇게 value로 주든, iLoveMochi로 주든 내가 주고 싶은 값으로 주면 된다. 그럼 실제로 한번 쿼리를..

article thumbnail
[MyBatis] 마이바티스 부등호(>, <, >=, <= )가 안 먹히는 현상/부등호 오류 ( CDATA )
MyBatis 2022. 5. 1. 01:47

마이바티스를 사용하면서 값을 비교하다 보면 부등호를 쓰게 되는데, 그럴 때 문법오류가 뜰 때가 있다. SQL문법 오류는 아닌데, 마이바티스에서 나는 에러이다 보니... 해결법은 간단하다. CDATA로 묶어 주면 되는데 아래와 같다. -- 에러남 AND BEG_DE 으로 부등호를 묶어 주면 된다

[MyBatis] 어노테이션 방식과 XML방식의 구현방법 및 차이점
MyBatis 2022. 3. 17. 08:05

지금까지 개발업무를 보면서 마이바티스를 당연하게 많이 써왔는데, xml파일을 따로 두어 쿼리문을 작성한 뒤 데이터베이스에 접근하여 CRUD를 했더랬다. 근데 이게 XML방식만 있는게 아니라 어노테이션 방식도 있다는 것을 알게 되서 정리해본다. 1. 어노테이션 방식 ============================================================================ 기본문법 @Select("쿼리") public String 메서드명(); @Insert("쿼리") public String 메서드명(); @Update("쿼리") public String 메서드명(); @Delete("쿼리") public String 메서드명(); Service @Autowired Index..

728x90