Comment utiliser la requête SQL dynamique dans MyBatis avec annotation (comment utiliser selectProvider)?

j'essaie d'éviter d'avoir un xml supplémentaire pour définir le mapper dans mybatis3. L'Annotation correspond.

je suis un peu confus par l'usage de @SelectProvider/@InsertProvider/etc. Ne pensez pas qu'il y a beaucoup de ressources en ligne qui me guident à travers cela.

en gros, j'aimerais trouver la version annotée d'alternative pour dans mybatis3.

par exemple, j'ai un mapper xml et je veux le convertir pour l'utiliser annotation

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

est-ce que quelqu'un pourrait fournir une réponse/solution concrète incluant le code?

Merci d'avance!

15
demandé sur Andrew Reid 2011-07-14 01:04:08

2 réponses

une solution alternative pour vous pourrait être:

ajouter <script> au début de votre @ 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>")

en plus, nous compilons .groovy .classe dans nos projets, donc, nous pouvons écrire SQL dans @annotation comme ci-dessus

20
répondu farmer1992 2017-03-24 19:07:53
  1. dans votre interface mapper:

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

    public static String myMethod() {
        return "select * from MyTable where id=#{id}"; 
    }
    
5
répondu acala 2012-12-07 09:23:13