往往在一个展示页面(以下统称类),显示一列数据,其重要包含另一个类的某个字段,这个时候我们就要用到这个技能啦,往往分为以下几个步骤,
第一步:在展示页面对应的实体类里加入 另一个实体类(这里做说明,比如要在A类里展示B类的某个字段,如果A的某条数据是对应B的多个那就定义成B类list集合List b = new ArryList();,如果对应的是单条数据,就定义成对象 private B b = new B()?,可能有些绕,慢慢体会
这是在A类里定义了B类的属性,同时添加get set方法,此处省略
protected MsDocumentsInfo msDocumentsInfo = new MsDocumentsInfo();
第二步:在A类的map.xml文件中的resultMap标签中定义,这个字段就是我要在A类列表中展示的B类的一个字段,column不是数据库字段值,而是下面第三步中连接查询,展示的B类字段的别名,这里的property 属性,就是你在A类中定义的对象
(这个一定要对应上没否则前台报错无getter方法,后台报错映射错误)
<collection property="msDocumentsInfo" ofType="com.quanyu.ms.persistence.model.MsDocumentsInfo">
<result property="deliveryNo" column="delivery_no"/>
</collection>
第三步:写sql,连接查询
SELECT
a.*,b.delivery_no delivery_no
FROM ms_input_stment a
LEFT JOIN ms_documents_info b ON a.cover_stment_no = b.storage_no
第四步:页面取值,这里使用的是grid,同样分两种情况,与第一步对应,如果你当时定义的这个类是List那么就这么写
,formatter : function(value, row, index) {
return row.msDocumentsInfo[0].deliveryNo;
}
如果你定义的是B b= new B(); 那么你就这么写
,formatter : function(value, row, index) {
return row.msDocumentsInfo.deliveryNo;
}
这就大功告成了