2011-07-13 10 views
12

Próbuję uniknąć posiadania dodatkowego xml, aby zdefiniować program odwzorowujący w mybatis3. Adnotacja pasuje bezpośrednio.Jak używać dynamicznego zapytania SQL w MyBatis z adnotacją (jak korzystać z selectProvider)?

Jestem nieco zdezorientowany przez użycie @ SelectProvider/@ InsertProvider/etc. Nie sądzę, że wiele zasobów online prowadzi mnie przez to.

Zasadniczo chciałbym znaleźć alternatywną wersję adnotacji w mybatis3.

Na przykład, mam mapowania xml i chcę przekonwertować go używać adnotacji

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

ktoś może dostarczyć konkretną odpowiedź/rozwiązanie w tym kodzie?

Z góry dziękuję!

Odpowiedz

5
  1. w interfejsie odwzorowujący:

    @SelectProvider(type=MyClass.class, method="myMethod") 
    public Object selectById(int id); 
    
  2. w MojaKlasa:

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

Alternatywnym rozwiązaniem dla Ciebie może być:

Dodaj <script> na początku Twojego @annotation

@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>") 

W dodatkowych, możemy skompilować .groovy do .class w naszych projektach, a zatem możemy napisać SQL w @annotation jak powyżej

+0

To jest naprawdę fajne. Jedno zastrzeżenie: element '