12341235
2019-06-26 09:39:03 작성 2019-06-26 09:45:56 수정됨
11
597

mybatis oracle질문있습니다.


select name

from name_table

where name like '%김%'


위에 sql을 어떻게 mybatis로 표현될까요? 

인터넷보니까 다 동적만 있던데 정적표현은 안되나요?

0
  • 답변 11

  • Frudy
    7k
    2019-06-26 09:40:12
    질문이 무슨뜻인지 몰라서 저도 와드남겨봅니다.
  • 드코
    3k
    2019-06-26 09:42:29

    select name

    from name_table

    where name like '%김%'


  • 12341235
    2019-06-26 09:46:47

    아 sql문에 where절 생략됬네요

    그런데 이거 말고 spring에 mybatis에서 정적like쓰는방법을 알고싶습니다.

  • 드코
    3k
    2019-06-26 10:07:12 작성 2019-06-26 10:08:01 수정됨

    정적 like가 뭔가요
    위에쓴 쿼리가 정적 like 아닌가요?

    '%김%' 으로 고정되어 있으니 정적인거 아닌가

  • Balmy
    862
    2019-06-26 10:08:54 작성 2019-06-26 10:11:13 수정됨

    지금 써두신게 정적표현 아닌가요?

    동적표현은 중간에 if문등으로 바꾸는게 동적쿼리가 아니였나요...


    동적 예시가


    select*from tablename
    
    <c:if test="#{a != null}">
    
    where a = #{a}
    
    </c:if>


    대충 이런거 아니였나요....

  • 12341235
    2019-06-26 10:09:11 작성 2019-06-26 10:09:45 수정됨

    저걸 mybatis에서 동적으로

    '%'||#{name}||'%'

    이런식으로 표현하는데 이걸 정적으로 하고싶다고요

    그냥 '%김%'하니까 에러나더라구요

  • 드코
    3k
    2019-06-26 10:12:07 작성 2019-06-26 10:13:21 수정됨

    name LIKE CONCAT('%', '김', '%')


    concat으로 문자열을 연결 할 수있습니다.


    다음에는 어떻게 무엇을 햇더니 어떻게 에러가나면서 안된다 상세하게 적어주시면 한번에 답변이 달릴거같아용

  • Balmy
    862
    2019-06-26 10:17:03

    그거 변수가 아니라 고정값을 넣고싶다고 하시는것 같은데


    select name

    from name_table

    where name like '%김%'


    이거 되야 정상입니다만...다른곳에서 문제가 있는것 아닌가요?

    여기에 적어두신게 아닌 쿼리에 문제있는게 아닌가 살펴보시는게...

    일단 제가 방금 실험해봤는데 됩니다..

  • 12341235
    2019-06-26 10:21:50

    윗 두분 감사드립니다

    그런데 제가 부족해서인지 concat을써도 안되네요

    어짜피 전자정부기본DB라서 그냥 SQL 다 올려봅니다

    SELECT 

    A.MENU_NO, 

    A.MENU_NM, 

    A.PROGRM_FILE_NM, 

    B.URL

    FROM 

    COMTNMENUINFO A 

    JOIN 

    COMTNPROGRMLIST B

    ON 

    A.PROGRM_FILE_NM = B.PROGRM_FILE_NM

    WHERE 

    B.URL LIKE '%/pt/%'

    AND 

    A.MENU_NO NOT LIKE '%0'

    ORDER BY 

    MENU_NO;


    이걸 DB에서 실행하면되는데 mybatis에서 쓰면 안되더라구요

    참고로 DB는 ORACLE입니다.

  • Balmy
    862
    2019-06-26 10:25:55

    에러코드 보여주시면 빠를듯 합니다만

    일단 저거 그대로 넣으셨다면

    order by 에 menu_no 를 A나 B로 확정지어주시는거랑

    맨 뒤에 ; 이거 지워보시면..?

  • 12341235
    2019-06-26 10:33:25

    와 진짜 부끄럽고 어이없네요 

    하필 처음 정적like쓰는데 DB에 테스트한거 바로긁어서 세미콜론때문에

    에러난게... 하필에러도 문자잘못됬다고만하니까 저는 정적 like도

    뭔가 해줘야된다고 생각해서 이상한데서 찾았네요

    정말 감사합니다. 밥먹을때까지 삽질할뻔 했네요

  • 로그인을 하시면 답변을 등록할 수 있습니다.