xml文件为:
<!--1对多,指的是在那个多的里面都是不同的(collection),而在resultMap上的result都是一样的-->
<resultMap id="resultAllDTO" type="cn.org.emcs.materialapi.social.dto.DonationMeterialAllDTO">
<!-- <id property="ids" column="ids"/>-->
<result property="donationId" column="donation_id"/>
<!-- <result property="helpId" column="help_id"/>-->
<collection property="meterialDTOS" ofType="cn.org.emcs.materialapi.social.dto.MeterialDTO" javaType="java.util.List">
<result column="material_name" property="materialName"></result>
<result column="material_specs" property="materialSpecs"></result>
<result column="material_number" property="materialNumber"></result>
</collection>
</resultMap>
<select id="selectDonationMaterialByDonationId2" parameterType="cn.org.emcs.materialapi.social.vo.DonationMeterialVO" resultMap="resultAllDTO">
select a.donation_id
,a.material_name,a.material_specs,a.material_number
from t_h_material a
where a.donation_id=#{donationId}
</select>
java类分别为:
package cn.org.emcs.materialapi.social.dto;
import lombok.Data;
import lombok.experimental.Accessors;
import java.util.List;
@Data
@Accessors(chain = true)
public class DonationMeterialAllDTO {
private int ids;
// private String helpId;
private String donationId;
private List<MeterialDTO> meterialDTOS;
// private String contacts;
// // 前台传为userName
// private String userName;
// private String createTime;
// private String date;
// private String isAccept;
}
package cn.org.emcs.materialapi.social.dto;
import lombok.Data;
import lombok.experimental.Accessors;
@Data
@Accessors(chain = true)
public class MeterialDTO {
private String materialName;
private String materialSpecs;
private String materialNumber;
}
package cn.org.emcs.materialapi.social.dao;
import cn.org.emcs.materialapi.social.dto.DonationMeterialAllDTO;
import cn.org.emcs.materialapi.social.vo.DonationMeterialVO;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface DonationMaterial {
int insertDonationMaterial(DonationMeterialVO donationMeterialVO);
/**
* 通过helpId查询捐赠的物资
*/
List<DonationMeterialVO> selectDonationMaterialByHelpId(DonationMeterialVO donationMeterialVO);
/**通过donationId查询捐赠的物资
*
*/
DonationMeterialVO selectDonationMaterialByDonationId(DonationMeterialVO donationMeterialVO);
/**
* 通过donationId查询捐赠的物资2:将同一个捐献的物资保存到一个数组中
*/
DonationMeterialAllDTO selectDonationMaterialByDonationId2(DonationMeterialVO donationMeterialVO);
}
多对多
当时多对多时,接收参数使用集合,如List< TestDTO>这样的形式!!!!!!
public List test();
注意2:
在collection标签下的另外一张表如果要取数据,不能直接给column赋值为id,需要重新起个其他的名字,要不然这个集合只能得到一条数据。
eg:
select qi.id as item_id ...