1.实现商品新增,我们发现,新增是要包括两张表的。而且,我们要实现事务回滚,也就是说,如果新增过程中失败,那么我们就要将数据库恢复到之前的状态。我们首先在dubbo中书写对应的service及其实现类。
/**
* 新增包含商品表和商品描述表
* @param tbItem
* @param desc
* @return
*/
int insTbItemDesc(TbItem tbItem,TbItemDesc desc) throws Exception;
public int insTbItemDesc(TbItem tbItem, TbItemDesc desc) throws Exception {
int index =0;
try {
index= tbItemMapper.insertSelective(tbItem);
index+= tbItemDescMapper.insertSelective(desc);
} catch (Exception e) {
e.printStackTrace();
}
if(index==2){
return 1;
}else{
throw new Exception("新增失败,数据还原");
}
}
2.在 ego-service-impl 的 applicationContext.xml 中添加回滚
3.在manage中的TbItemService中添加类实现方法。
/**
* 商品新增
* @param item
* @param desc
* @return
*/
int save(TbItem item ,String desc) throws Exception;
public int save(TbItem item, String desc) throws Exception {
//先注入传过来的item和的desc中没有,但对应表有的东西
long id = IDUtils.genItemId();
item.setId(id);
Date date = new Date();
item.setCreated(date);
item.setUpdated(date);
item.setStatus((byte) 1);
TbItemDesc itemDesc = new TbItemDesc();
itemDesc.setItemDesc(desc);
itemDesc.setItemId(id);
itemDesc.setCreated(date);
itemDesc.setUpdated(date);
int index = 0;
//调用对应的dubbo
index = tbItemDubboServiceImpl.insTbItemDesc(item, itemDesc);
System.out.println("index:" + index);
return index;
}
4.最后写出对应的控制器代码
@RequestMapping("item/save")
@ResponseBody
public EgoResult insert(TbItem item,String desc){
EgoResult er = new EgoResult();
int index;
try {
index = tbItemServiceImpl.save(item, desc);
System.out.println("controler:index:"+index);
if(index==1){
er.setStatus(200);
}
} catch (Exception e) {
// e.printStackTrace();
er.setData(e.getMessage());
}
return er;
}