2011-07-13 14 views
12

Mapbat'ı mybatis3'te tanımlamak için ek bir xml kullanmaktan kaçınmaya çalışıyorum3. Ek açıklama doğru olarak girer.Açıklama ile MyBatis'te dinamik SQL sorgusu nasıl kullanılır (selectProvider nasıl kullanılır)?

@ SelectProvider/@ InsertProvider/etc kullanımı ile biraz kafam karıştı. Bu konuda bana rehberlik eden birçok kaynak olduğunu düşünmeyin.

Temel olarak, mybatis3'teki ek açıklamanın versiyonunu bulmak istiyorum. Örneğin

, bir xml mapper var ve bunu ek açıklama kullanmayı dönüştürmek istiyorum

<select ...> 
    <where> 
    <if cause.....> 
    </if> 
    <if cause......> 
    </if> 
    </where> 
</select> 

kimse koduyla birlikte somut bir cevap/çözüm sağlayabilir misiniz?

Şimdiden teşekkürler!

@SelectProvider(type=MyClass.class, method="myMethod") 
public Object selectById(int id); 
  • Sınıfım içinde: senin mapper arayüzünde

  • cevap

    5
    1. public static String myMethod() { 
          return "select * from MyTable where id=#{id}"; 
      } 
      
    15

    sizin için alternatif bir çözüm olabilir:

    başında <script> ekle senin Ek olarak

    @Update("<script> 
        update Author 
        <set> 
         <if test="username != null">username=#{username},</if> 
         <if test="password != null">password=#{password},</if> 
         <if test="email != null">email=#{email},</if> 
         <if test="bio != null">bio=#{bio}</if> 
        </set> 
        where id=#{id} 
    </script>") 
    

    @annotation, biz .groovy böylece biz bu gerçekten harika

    +0

    yukarıdaki gibi @annotation SQL'ye yazabilir, projelerimizde SINIFI için derlemek. Yine de bir uyarı: '