SpringMVC同时保存两张表思路
2015-09-17 09:05
579 查看
如果需同时保存两张表,一个用户表,一个订单表,当点击保存按钮时,通过ajax发送请求到后台控制器controller,在控制器里面先去判断该用户是否存在,即先调用判断用户是否存在的方法,然后对该方法的返回值进行判断,如果该用户存在,则保存订单表,即调用保存订单表的方法;如果该用户不存在,先要保存用户表,即调用保存用户表的方法,然后对该方法的返回值进行判断,成功的话再去保存订单表。部分代码如下:
在service中的接口:
在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>
相关文章推荐
- spring+springMVC集成(annotation方式)
- JAVA正则表达式校验密码实战实例
- 【Java多线程】-Condition使用(生产者-消费者)
- Windows系统下Java连接SQL Server的方法简介
- eclipse不能进入debug模式的解决方法
- 用NetBeNetBeans
- Eclipse中TODO的分类,以及自动去除
- Spring的注解方式
- 「LintCode」java字符串練習四──anagrams
- 《Java核心技术卷一》笔记 多线程同步(底层实现)
- Java常见知识问答
- 传智Java集合+IO 部分知识测试
- 《java遇到html--servlet篇》2015.09.16笔记
- 远程访问hdfs
- 安卓开发——JNI——回调java中的方法
- Java线程中的ThreadPoolExecutor
- JavaMail
- 解决eclipse“copy项目重命名后重新发布,项目名在地址栏仍然是原来的项目名”的问题
- 关于CXF整合Spring时出现jaxws.xsd无法找到的问题
- Java解析XML文件