update怎么写会更好?

来源:7-1 关于事务:红包并发中的事务

kevin00012

2019-09-22

难道这样?

//Controller的update方法
@PutMapping("/luckmoneys/{id}")
public Luckmoney update(@PathVariable("id") Integer id,
                        @RequestParam(value="money",required=false,defaultValue = "0")BigDecimal money,
                        @RequestParam(value="producer",required = false,defaultValue = "")String producer,
                        @RequestParam(value="consumer",required = false,defaultValue = "")String consumer){
    Luckmoney luckmoney=new Luckmoney();
    luckmoney.setId(id);
    luckmoney.setMoney(money);
    luckmoney.setProducer(producer);
    luckmoney.setConsumer(consumer);
    return service.update(luckmoney);
}
//Service中的update方法
public Luckmoney update(Luckmoney luckmoney){
    Optional<Luckmoney> optional=repository.findById(luckmoney.getId());
        if(optional.isPresent()){
            Luckmoney _luckmoney=optional.get();
            if(!StringUtils.isEmpty(luckmoney.getProducer())){
                _luckmoney.setProducer(luckmoney.getProducer());
            }
            if(!StringUtils.isEmpty(luckmoney.getConsumer())){
                _luckmoney.setConsumer(luckmoney.getConsumer());
            }
            if(!luckmoney.getMoney().equals(BigDecimal.ZERO)){
                _luckmoney.setMoney(luckmoney.getMoney());
            }
            return repository.save(_luckmoney);//这里update的方法也是save
        }else {
            return null;
        }
    }
写回答

3回答

慕雪8281871

2019-11-24

@PutMapping("/update/{id}")
public LuckyMoney update(@PathVariable("id") Integer id,@RequestParam("consumer") String consumer){
   LuckyMoney byId = this.findById(id);
   byId.setConsumer(consumer);
   return luckymoneyRepository.save(byId);
}

之前写过根据id查询的方法,所以直接this调用就好啦。

0
4
慕雪8281871
回复
kevin00012
反正师兄没在service层中写update
2019-12-02
共4条回复

慕UI1337305

2019-11-06

@PutMapping("/luckymoneys")
   public LuckyMoney updateLuckymoney(@ModelAttribute LuckyMoney luckyMoney){
       LuckyMoney luckyMoney1 = luckyMoneyRepository.findById(luckyMoney.getId()).orElse(null);
       if (luckyMoney1!=null){
// SpringBeanUtils.copyPropertiesIgnoreNull是自己实现的工具类,可以将非空的属性值传给数据库的对象
// 直接使用spring的BeanUtils.copyProperties方法会将空值也穿过去所以不能直接用
           SpringBeanUtils.copyPropertiesIgnoreNull(luckyMoney,luckyMoney1);
           return  luckyMoneyRepository.save(luckyMoney1);
       }
       return null;
   }

0
1
kevin00012
业务都在controller处理了,那service层里面做什么?是不要service了吗?
2019-11-25
共1条回复

chengfei001

2019-10-09

只能这么写了,除非你在进一步的增加填充的功能

0
0

2小时快速上手Spring Boot

一切为了效率!两个小时学习SpringBoot,为你省时省力Get干货

11582 学习 · 249 问题

查看课程