Java >> Java tutorial >  >> Tag >> mybatis

MyBatis:indsamling via annotering i én forespørgsel

AFAIK, du kan ikke bruge JOIN s, hvis du bruger kortlægning med annoteringer.

Fra dokumentet, om brugen af ​​@Many ,

En tilknytning til en samlingsegenskab af en kompleks type. Attributter:select, som er det fuldt kvalificerede navn på en kortlagt sætning (dvs. mapper-metoden), der kan indlæse en samling af forekomster af de passende typer, fetchType, som afløser den globale konfigurationsparameter lazyLoadingEnabled for denne tilknytning. BEMÆRK Du vil bemærke, at tilknytningstilknytning ikke understøttes via AnnotationsAPI. Dette skyldes begrænsningen i Java Annotations, der ikke tillader cirkulære referencer.

Du kan direkte bruge dit ResultMap med annoteringer, hvis du vil:

@Select("SELECT QUERY")
@ResultMap("readItemsRM")
public List<Item> select();

Jeg fandt ud af, at du faktisk kan lave én-til-mange- eller én-til-én-forbindelser ved hjælp af Java-annoteringer på MyBatis

public class Master {
    private String nama;
    private Short usia;
    private List<Contoh> contohs;
}

public interface MasterMapper {

    @Select("SELECT master.nama, master.usia FROM test.master WHERE master.nama = #{nama}")
    @Results(value = {
         @Result(property="nama", column="nama"),
         @Result(property="usia", column="usia"),
         @Result(property="contohs", javaType=List.class, column="nama", 
         [email protected](select="getContohs"))
    })
    Master selectUsingAnnotations(String nama);

    @Select("SELECT contoh.id, contoh.nama, contoh.alamat "
         + " FROM test.contoh WHERE contoh.nama = #{nama}")
    List<Contoh> getContohs(String nama);
}

Der er flere detaljer i dette link


Java tag