• spring jpa如何进行多表查询


    最近做的一个需求,前端传入一个对象,里面的字段涉及两个表的字段,后台需要相应进行插入到数据库的表中,如下,前端传入的数据

    formObj:{
    phone:'',
    id:0,
    projectName:'',//项目名称
    matchType:'创新组',// 参赛组别 创新组 创业组
    matchArea:'华南赛区',// 参赛赛区
    industryField:'',// 行业领域
    patentAmount:'',// 专利数
    brandAmount:'',// 商标数
    copyrightAmount:'',// 版权数
    isTransfram:0,// 是否有产学研合作/成果转化意向 1:是 0:否
    registDate:'',// 企业注册时间
    isHighTech:0,// 是否高新企业(培育)/小巨人企业 1:是 0:否F
    isHaveBonus:0,// 是否获得投资资金 1:是 0:否
    isNeedFinance:0,// 是否需要融资 1:是 0:否
    takePartDesc:'',// 参评人简介
    projectProfile:'',// 项目概要
    businessPlan:'',// 商业计划书:附件形式
    otherMaterials:'',// 其他证明材料:附件形式
    projectSort:'第六届',// 第几届
    userName:'',//项目负责人
    status:0, //状态 1:报名 2:草稿
    msg:'',
    attch:'',
    awardCaseList:[],
    applyUserList:[],//项目报名人
    },

    其中awardCaseList:[],applyUserList:[]传入的数据需要保存其他两张表中。后台的代码如下

    @RequestMapping(value = "/apply", method = RequestMethod.POST)
    @ResponseBody
    public CommonRespon apply(@RequestBody ApplyProjectBean applyProject, HttpServletRequest request) {
    CommonRespon respon = new CommonRespon();
    ApplyProject project = ApplyProjectBean.setApplyProject(applyProject);
    try {
    ShiroUser shiroUser = getCurrentUser();
    if (shiroUser == null) {
    respon.setMsg(Const.CODE_NO_LOGIN_STR);
    respon.setCode(Const.CODE_NO_LOGIN);
    return respon;
    }
    if (applyProject.getId() == null || applyProject.getId() == 0) {
    // 不存在该项目
    project.setCreateUserId(shiroUser.getId());
    project.setCreateTime(new Date());
    } else {
    // 已经存在该项目
    ApplyProject applyOld = goldenService.findApplyProject(applyProject.getId());
    project.setCreateUserId(applyOld.getCreateUserId());
    project.setCreateTime(applyOld.getCreateTime());
    project.setId(applyOld.getId());
    // 先删除该项目的相关人
    goldenService.delApplyList(applyProject.getId());
    // 删除获奖
    goldenService.deleteAwardList(applyProject.getId());
    }
    project.setUpdateTime(new Date());// 更新时间
    // 项目报名人
    List<ApplyUserBean> applyUserList = applyProject.getApplyUserList();
    if (applyUserList != null) {
    project.setUserName(applyUserList.get(0).getUserName());//项目负责人
    for (ApplyUserBean u : applyUserList) {
    if (u.getIsContactMan() == 1) {
    project.setPhone(u.getMobilePhone());//联系人号码
    }
    }
    }
    // 保存项目
    ApplyProject projects = goldenService.save(project);
    if (applyUserList != null) {
    goldenService.saveApplyList(ApplyProjectBean.setApplyUserList(applyUserList, projects));// 保存项目人
    }
    // 获奖情况
    List<SimpleFieldBean> awards = applyProject.getAwardCaseList();
    if (awards != null) {
    goldenService.saveAwardList(ApplyProjectBean.setAwardCaseList(awards, projects));
    }
    respon.setData(project.getId());
    respon.setMsg(Const.CODE_SUCCESS_STR);
    respon.setCode(Const.CODE_SUCCESS);
    } catch (Exception e) {
    e.printStackTrace();
    respon.setMsg(Const.CODE_ERROR_STR);
    respon.setCode(Const.CODE_ERROR);
    }
    return respon;
    }

    需要用@RequestBody来注释 ApplyProjectBean applyProject(传入的参数),而ApplyProjectBean 对象如下

    private List<SimpleFieldBean> awardCaseList;  
    private List<ApplyUserBean> applyUserList;
    private String msg;
    public List<SimpleFieldBean> getAwardCaseList() {
    return awardCaseList;
    }

    public void setAwardCaseList(List<SimpleFieldBean> awardCaseList) {
    this.awardCaseList = awardCaseList;
    }

    public List<ApplyUserBean> getApplyUserList() {
    return applyUserList;
    }

    public void setApplyUserList(List<ApplyUserBean> applyUserList) {
    this.applyUserList = applyUserList;
    }

    public String getMsg() {
    return msg;
    }

    public void setMsg(String msg) {
    this.msg = msg;
    }

    SimpleFieldBean,ApplyUserBean这个属性代表相应表中的字段,可能有多条,就用List,这样就相当于把三个表的数据作为一个对象传入,对这个参数进行操作,就可以相应对对应表进行操作。

  • 相关阅读:
    TOMCAT原理详解及请求过程
    详解Tomcat配置及使用
    Android网络编程(三)Volley使用方法全解析
    Android开发文档翻译之-Services
    竞赛中经常使用的C++写法
    Android消息机制
    boost的内存管理
    二叉树遍历技巧
    【 D3.js 视频系列 】 飞速入门
    [Spring实战系列](19)Servlet不同版本号之间的差别
  • 原文地址:https://www.cnblogs.com/lyfzero/p/7516117.html
Copyright © 2020-2023  润新知