mybatis關聯集合

在mybatis 中,父類的baen對象中有一個List<Bean>,子類繼承父類後並且在mybatis的<resultMap>中繼承了父類的<resultMap>,在子類查詢時沒有這個list的屬性,我們應該在父類中使用<collection>標籤來映射這個集合,讓子類都有這個

代碼:

<resultMap id="BaseResultMap" type="base.domain.MapGeometry">
<id column="WID" jdbcType="VARCHAR" property="wid"/>
<result column="POINT_GEOMETRY" jdbcType="CLOB" property="pointGeometry"/>
<result column="NAVIGATION_GEOMETRY" jdbcType="CLOB" property="navigationGeometry"/>
<result column="LABEL_GEOMETRY" jdbcType="CLOB" property="labelGeometry"/>
<result column="POLYGON_GEOMETRY" jdbcType="CLOB" property="polygonGeometry"/>
<result column="BROADCAST_AREA_GEOMETRY" jdbcType="CLOB" property="broadcastAreaGeometry"/>
<result column="LOD_LVL_ID" jdbcType="VARCHAR" property="lodLvlId"/>
<result column="MIN_LOD_LVL" jdbcType="DECIMAL" property="minLodLvl"/>
<result column="MAX_LOD_LVL" jdbcType="DECIMAL" property="maxLodLvl"/>
<collection property="mapGeometryRTerminals" javaType="ArrayList" column="wid"
ofType="base.domain.MapGeometryRTerminal" select="selectTerminalByPrimaryKey"/>
</resultMap>
<select id="selectTerminalByPrimaryKey" parameterType="java.lang.String" resultType="map">
select
*
from tb_map_geometry_r_terminal
where GEOMETRY_WID = #{geometryWid,jdbcType=VARCHAR}
</select>

結果: 

"mapGeometryRTerminals": [{
    "GEOMETRY_WID": "c14782ef-1627-4233-aaf3-beec17b4d164",
    "TERMINAL_TYPE_WID": "2",
    "WID": "688D03A04DAA2DA9E050007F01002845"
}, {
    "GEOMETRY_WID": "c14782ef-1627-4233-aaf3-beec17b4d164",
    "TERMINAL_TYPE_WID": "5",
    "WID": "688D03A04DAB2DA9E050007F01002845"
}, {
    "GEOMETRY_WID": "c14782ef-1627-4233-aaf3-beec17b4d164",
    "TERMINAL_TYPE_WID": "6",
    "WID": "688D03A04DAC2DA9E050007F01002845"
}, {
    "GEOMETRY_WID": "c14782ef-1627-4233-aaf3-beec17b4d164",
    "TERMINAL_TYPE_WID": "9",
    "WID": "688D03A04DAD2DA9E050007F01002845"
}],

  在上面的代碼中<collection>中的property 對應的是你父類中bean中list的屬性名稱,javaType可以不寫,mybatis會判斷

類型,ofType對應的是你list集合中泛型的bean對象,select對應的是你下面寫的select查詢的id,column對應的是你的列名,下

面sql的傳入參數對不上也沒有關係,就跟我上面一樣,都是一樣的結果,當然你看到這個的時候我代碼裏已經改了


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章