SpringMVC同时保存两张表思路

本文介绍了如何在SpringMVC中处理同时保存用户和订单表的场景。当用户信息存在则直接保存订单,否则先创建用户再保存订单。控制器中通过判断用户是否存在来决定操作流程,确保数据的完整性和一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果需同时保存两张表,一个用户表,一个订单表,当点击保存按钮时,通过ajax发送请求到后台控制器controller,在控制器里面先去判断该用户是否存在,即先调用判断用户是否存在的方法,然后对该方法的返回值进行判断,如果该用户存在,则保存订单表,即调用保存订单表的方法;如果该用户不存在,先要保存用户表,即调用保存用户表的方法,然后对该方法的返回值进行判断,成功的话再去保存订单表。部分代码如下:

在service中的接口:

<span style="font-family:Microsoft YaHei;">public interface AddorderServiceI {

	public TOrder saveAddorder(TOrder t);//添加订单
	public TRegisterUser isexit(String telephone);//判断用户是否存在
	public TRegisterUser saveNewUser(TOrder t);//保存新用户
    
}</span>
在service中接口的实现方法:

<span style="font-family:Microsoft YaHei;">@Service
public class AddorderServiceImpl implements AddorderServiceI {	
	@Autowired
	private BaseDaoI<TOrder> bd;
	@Autowired
	private BaseDaoI<TRegisterUser> ru;
	/**
	 * 添加订单
	 */
	@Override
	public TOrder saveAddorder(TOrder t) {
		TOrder od=new TOrder();
		BeanUtils.copyProperties(t, od);
		od.setOrderno(t.getOrderno());
		od.setOrderdate(t.getOrderdate());
		od.setAppointmentdate(t.getAppointmentdate());
		od.setAreid(t.getAreid());
		od.setAddress(t.getAddress());
		od.setRepairid(t.getRepairid());
		od.setRepaircontent(t.getRepaircontent());
		od.setOrderstatus("1");
		od.setUsertelphone(t.getUsertelphone());
		od.setUsername(t.getUsername());
		bd.save(od);		
		return od;
	}
	/**
	 * 判断用户是否存在
	 */
	@Override
	public TRegisterUser isexit(String telephone) {
		String sql = "from TRegisterUser as t where t.telphone=:telephone";
		Map<String, Object> params = new HashMap<String, Object>();
		params.put("telephone",telephone);
		TRegisterUser s = ru.get(sql,params); 
		return s;
	}

	/**
	 * 保存新用户
	 */
	@Override
	public TRegisterUser saveNewUser(TOrder t) {	
		TRegisterUser tt=new TRegisterUser();
		BeanUtils.copyProperties(t, tt);
		tt.setAddress(t.getAddress());
		tt.setUsername(t.getUsername());
		tt.setTelphone(t.getUsertelphone());
		tt.setRegisterdate(t.getOrderdate());
		tt.setLoginname(t.getUsertelphone());
		tt.setUserstate("1");
		tt.setUsertype("1");
		tt.setAreaid(t.getAreid());
		ru.save(tt);
		return tt;	
	}
}</span>
控制器controller:

<span style="font-family:Microsoft YaHei;">@Controller
@RequestMapping("/addorder")
public class AddorderController extends BaseController{
	
	@Autowired
	private AddorderServiceI addorderService;
	
	/**
	*添加订单控制器
	* @author:shichenglin           
	* @date:2015-9-15,下午6:33:20      
	* @Title:save 
	* @return:Json
	 */
	@RequestMapping("/save")
	@ResponseBody
	public Json save(TOrder t,HttpServletRequest request){
			Json j = new Json();
			try {
				TRegisterUser s = addorderService.isexit(t.getUsertelphone());
				if(s==null){
					TRegisterUser tu= addorderService.saveNewUser(t);
					if(tu!=null){
						t.setUserid(tu.getId());
						TOrder to = addorderService.saveAddorder(t);
						
						if(to!=null){
							j.setMsg("添加订单成功!");
						}else{
							j.setMsg("添加失败!");
						}
					}
				}else{
					TOrder to = addorderService.saveAddorder(t);
					if(to!=null){
						j.setMsg("添加订单成功!");
					}else{
						j.setMsg("添加失败!");
					}
				}
				
			} catch (Exception e) {
				e.printStackTrace();
				j.setMsg(e.getMessage());
			}
			return j;
		
	}
}</span>





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值