Springboot+Mybaits之两张表同时插入数据

时间:2023-11-25 19:24:08

项目需求是,一张表添加数据的同时,另外一张表也需要添加数据,话不多说,直接上代码。

1.Controller,我把两个DTO直接放到一个@RequestBody中。其中throws是后台获取当前时间抛出的异常,下面有代码。

 @PostMapping("/addPrize/{id}")
public AdminResponse addPrize (@PathVariable Integer id,
@RequestBody PrizeDTO prizeDTO,VipGiftDTO vipGiftDTO,
@SessionAttribute("loginMember") Administrator administrator
)throws ParseException{
activeLuckyService.insertPrize(id,prizeDTO, administrator,vipGiftDTO);
return new AdminResponse();
}

2.Service层

     void insertPrize(Integer id, PrizeDTO prizeDTO, Administrator administrator,VipGiftDTO vipGiftDTO)throws ParseException;

3.Impl层

 public void insertPrize(Integer id, PrizeDTO prizeDTO, Administrator administrator,VipGiftDTO vipGiftDTO)
throws ParseException {
long bankId = getBankId(administrator);
Prize s = new Prize();
BeanUtils.copyProperties(prizeDTO,s);
//随机给的固定是4,以后根据修改
s.setPrizeType(4);
//不确定是什么,随机给的,等最后确认
s.setPrizeId(1L);
s.setActiveId(id);
pize.insertSelective(s); VipGift v = new VipGift();
BeanUtils.copyProperties(vipGiftDTO,v);
v.setBankPhone(administrator.getUsername());
v.setBankReferrer(administrator.getPassword());
v.setStatus(0);
v.setPrizeId(s.getPrizeId()); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
String now = df.format(new Date());
Date sj = df.parse(now);
v.setCreateTime(sj);
v.setUpdateTime(sj);
v.setBranchName("");
vip.insertSelective(v);
}

4.前台

Springboot+Mybaits之两张表同时插入数据

5.之前报错信息,流关闭了

Springboot+Mybaits之两张表同时插入数据

总结:根据项目需求,之前做的是Controller放入两个@RequestBody,所以试了一下前台请求两个请求路径还是不可以,但是SpringMVC只能获取到一个,所以就试了试把两个DTO放到一个@RequestBody中,后台可以获取到值,可以插入到数据库中。

之前想过手写两条SQL插入语句,然后插入到表中,但是用的是自带的插入方法,所以就直接奔着这种方法去改了,最后成功了。

网上的方法有很多,但是没有去试过,所以不好做任何的评价。

如有不对地方希望各位指正、留言