2017-11-24 18 views
0

MyBatis에서 많은 매개 변수를 사용하여 선택 쿼리를 수행해야하므로 기본 매퍼 XML 파일 구조를 사용하고 "UPPER (column_name) =?" 결과 변환 된 쿼리 어떻게해야합니까? 여기 MyBatis, UPPER 위치 조건

는 내 여기 절

<sql id="My_Select"> 
    <where> 
     <foreach collection="oredCriteria" item="criteria" separator="or"> 
      <if test="criteria.valid"> 
       <trim prefix="(" prefixOverrides="and" suffix=")"> 
        <foreach collection="criteria.criteria" item="criterion"> 
         <choose> 
          <when test="criterion.noValue"> 
           and ${criterion.condition} 
          </when> 
          <when test="criterion.singleValue"> 
           and UPPER(${criterion.condition} #{criterion.value}) 
          </when> 
          <when test="criterion.betweenValue"> 
           and ${criterion.condition} #{criterion.value} 
           and 
           #{criterion.secondValue} 
          </when> 
          <when test="criterion.listValue"> 
           and ${criterion.condition} 
           <foreach close=")" collection="criterion.value" item="listItem" 
            open="(" separator=","> 
            #{listItem} 
           </foreach> 
          </when> 
         </choose> 
        </foreach> 
       </trim> 
      </if> 
     </foreach> 
    </where> 
</sql> 

및 전체 선택 문입니다 :

<select id="mySelect" parameterType="myDataExample" 
    resultMap="myResultMap"> 
    select 
    <if test="distinct"> 
     distinct 
    </if> 
    <include refid="my_Column_List" /> 
    from istanza_metadato 
    <if test="_parameter != null"> 
     <include refid="My_Select" /> 
    </if> 
    <if test="orderByClause != null"> 
     order by ${orderByClause} 
    </if> 
</select> 

난 항상이 일

같은 오류가 발생 매개 변수

을 설정하는 동안 오류가 발생

...

(UPPER (id_metadato =?)와 UPPER (valore =?))

내가 솔루션에 가까이있어 느낌,하지만 난 방법을 찾을 수 없습니다. 모두에게 감사합니다

+0

표현식을 'UPPER'하지 말고 기준에 'upper' 함수를 추가하십시오. – Blank

+0

예를 들어 설명해 주시겠습니까? – Fjordo

+0

'WHERE (UPPER (id_metadato) =? 및 UPPER (valore) =?)'가 작동합니다. – Blank

답변

0

내 문제가 해결되었습니다. 사양이 변경되어 더 이상 상단이 필요하지 않습니다. 그런데 그 문제를 처리하여 쿼리 언어와 같은 mybatis를 순수한 SQL 언어로 변경했습니다.