主表Banner添加,附带的BannerDetail明细表数据(1-N)条数据也添加
利用postman测试结果显示图
Controller :
@CrossOrigin
@PostMapping("/saveBanner")
public String saveProductItem(@RequestBody BannerDetailVO bannerDetailVO) {
Result result = null;
try {
int num = bannerService.insertBanner(bannerDetailVO);
result = num > 0 ? new Result(ResultCode.SECCESS) : new Result(ResultCode.FAIL);
} catch (Exception e) {
ResultCode.UNKNOW.setResult_msg(e.getMessage());
result = new Result(ResultCode.UNKNOW);
}
String jsonStr = JSONObject.toJSONString(result);
return jsonStr;
}
MyBatis :
<insert id="insertBanner" useGeneratedKeys="true" keyProperty="id" parameterType="com.bmcs.ps.dal.entity.Banner">
INSERT INTO banner
(`code`,`name`,`describe`,`type`,width,height,memo)
VALUES (#{code,jdbcType=VARCHAR},#{name,jdbcType=VARCHAR},#{describe,jdbcType=VARCHAR},#{type,jdbcType=INTEGER},#{width,jdbcType=FLOAT},#{height,jdbcType=FLOAT},#{memo,jdbcType=VARCHAR})
</insert>
item=“bannerDeteil” 是取个别名, collection=“bannerDetailList”
跟BannerDetailMapper中int insertBannerDetail(@Param(“bannerDetailList”) List< BannerDetail > bannerDetailList);要一致对应,循环添加从表中N条数据
<insert id="insertBannerDetail" parameterType="com.bmcs.ps.dal.entity.BannerDetail">
INSERT INTO bannerdetail (`no`, sort, price,`code`) VALUES
<foreach collection="bannerDetailList" item="bannerDeteil" separator=",">
(#{bannerDeteil.no},#{bannerDeteil.sort},#{bannerDeteil.price},#{bannerDeteil.code})
</foreach>
</insert>
pojo :
BannerDetailVO包含了Banner主表,BannerDetail从表
public class BannerDetailVO {
private Banner banner;
private List<BannerDetail> bannerDetailList;
public Banner getBanner() {
return banner;
}
public void setBanner(Banner banner) {
this.banner = banner;
}
public List<BannerDetail> getBannerDetailList() {
return bannerDetailList;
}
public void setBannerDetailList(List<BannerDetail> bannerDetailList) {
this.bannerDetailList = bannerDetailList;
}
}
selvice :
BannerService中:
int insertBanner(BannerDetailVO bannerDetailVO ) throws Exception;
BannerMapper中:
int insertBanner(Banner banner);
BannerDetailMapper中 :
int insertBannerDetail(@Param("bannerDetailList") List<BannerDetail> bannerDetailList);
因为我这里是想要将Banner主表的code,添加到BannerDetail从表code中
@Override
@Transactional
public int insertBanner(BannerDetailVO bannerDetailVO) throws Exception {
int result = 0;
if (bannerDetailVO.getBanner().getId() == null) {
bannerMapper.insertBanner(bannerDetailVO.getBanner());
Integer id = bannerDetailVO.getBanner().getId();
String code = bannerMapper.findBannerCode(id);
if (bannerDetailVO.getBannerDetailList() != null && bannerDetailVO.getBannerDetailList().size() > 0) {
for (BannerDetail bd : bannerDetailVO.getBannerDetailList()) {
bd.setCode(code);
}
result = bannerDetailMapper.insertBannerDetail(bannerDetailVO.getBannerDetailList());
}
}
return result;
}