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的传入参数对不上也没有关系,就跟我上面一样,都是一样的结果,当然你看到这个的时候我代码里已经改了


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值