MyBatis 매개변수 유형이 String일 때 자주 발생하는 문제 및 해결 방법

1. 매개변수가 String일 때 보간 문제
다음 Dao 인터페이스 방법이 있다고 가정해 보세요.

public Account findByAccountType (String type)throws DaoException;
대응하는 마퍼.xml

<select id="findByAccountType " parameterType="string" resultType="account">
  select *
  form account
  <where>
    <if test ="type != null">
      type=#{type}
    </if>
  </where>
</select>
일반적으로 우리는 이런 식으로 쓰는데 다른 유형에 대해서는 맞지만 String을 위해 던지는 이상은 다음과 같다.
There is no getter for property named 'type ' in 'class java.lang.String'
왜냐하면 MyBatis는 매개 변수가 String이면 인터페이스 방법의 인삼이 무엇이든지 Mapper에 있어야 하기 때문이다.xml에서 참조할 때 _로 변경해야 함parameter 만이 인식할 수 있습니다.

<select id="findByAccountType " parameterType="string" resultType="account">
  select *
  form account
  <where>
    <if test ="_parameter!= null">
      type=#{_parameter}
    </if>
  </where>
</select>
2. 문자열 매개 변수를 동일하게 비교할 때의 문제
오류:

<if test="_parameter == '1' ">
  type=#{_parameter}
</if>
정확:

<if test='_parameter == "1" '>
  type=#{_parameter}
</if>
<if test="_parameter == '1'.toString() ">
  type=#{_parameter}
</if>
주: 상술한 문제는 라벨에만 국한된 것이 아니라 다른 동적 sql 라벨도 String을 처리할 때 같은 문제가 발생할 수 있습니다.
위에서 말한 것은 편집자가 여러분께 소개한 MyBatis 매개 변수 유형이 String일 때 흔히 볼 수 있는 문제와 해결 방법입니다. 여러분께 도움이 되었으면 합니다. 만약에 궁금한 점이 있으면 저에게 메시지를 남겨 주십시오. 편집자는 제때에 여러분에게 회답할 것입니다.여기에서도 저희 사이트에 대한 지지에 감사드립니다!

좋은 웹페이지 즐겨찾기