当前位置: 首页 > 知识库问答 >
问题:

如何在Springboot中使用单个api根据用户类型保存不同的用户?

那谦
2023-03-14

我想保存学生和教师的信息使用单一的邮政API。如果我选择“学生”类型,数据将保存在学生表中。如果我选择“教师”类型,数据将保存在教师表中。但是该操作将由一个API调用完成。

package com.example.demo.Model;

import java.util.Date;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.ManyToOne;

import com.sun.istack.NotNull;

@Entity
public class Student {
    @Id
    private int s_id;
    @NotNull
    private String s_name;
    @NotNull
    private Date admission_date;
    @ManyToOne
    private Class class_id;
    public int getS_id() {
        return s_id;
    }
    public void setS_id(int s_id) {
        this.s_id = s_id;
    }
    public String getS_name() {
        return s_name;
    }
    public void setS_name(String s_name) {
        this.s_name = s_name;
    }
    public Date getAdmission_date() {
        return admission_date;
    }
    public void setAdmission_date(Date admission_date) {
        this.admission_date = admission_date;
    }
    public Class getClass_id() {
        return class_id;
    }
    public void setClass_id(Class class_id) {
        this.class_id = class_id;
    }
}
package com.example.demo.Model;

import javax.persistence.Entity;
import javax.persistence.Id;

import com.sun.istack.NotNull;

@Entity
public class Teacher {
    @Id
    private int t_id;
    @NotNull
    private String t_name;
    public int getT_id() {
        return t_id;
    }
    public void setT_id(int t_id) {
        this.t_id = t_id;
    }
    public String getT_name() {
        return t_name;
    }
    public void setT_name(String t_name) {
        this.t_name = t_name;
    }
}
@Service
public class ServiceImplementation implements SchoolService {
    @Autowired
    private StudentRepository sp;
    private TeacherRepository tp;

    @Override
    public void save(Student student) {
        sp.save(student);
    
    }

    @Override
    public void save(Teacher teacher) {
       tp.save(teacher);
    
    }

}
@Controller
public class SchoolController {
    @Autowired
    private ServiceImplementation si;

    @PostMapping("/save/{type}")
    public void add(@PathVariable("type") String type) {
        if(type.equals("Student")) {
        
    }


}

共有1个答案

能旭
2023-03-14

使用Gson库处理json到java对象的转换,Yu将需要发送的学生json或教师json数据随类型一起保存到数据库中

import com.google.gson.Gson

@Controller
public class SchoolController {
@Autowired
private ServiceImplementation si;

@PostMapping("/save/{type}")
  public void add(@PathVariable("type") String type, @RequestParam String json ) {
    Gson gson = new Gson();
    if(type.equals("Student")) {
        Student  student = gson.fromJson(json, Student.class);
        si.save(student);
    }
    else {
        Teacher teacher = gson.fromJson(json, Teacher.class);
        si.save(teacher);
    }
    
}

}

 类似资料:
  • 我正在用C语言开发一种象棋游戏,只是为了练习。在游戏开始时,用户可以键入4样东西: ROW

  • 15/09/16 16:44:39 ERROR Executor:stage 1.0(TID 1)中任务0.0中的异常java.lang.IllegalArgumentException:应重复嵌套类型:required group array{required int32 num;}在org.apache.parquet.schema.conversionPatterns.listWrapper

  • 问题内容: 我正在使用Hibernate + JPA作为我的ORM解决方案。 我正在使用HSQL进行单元测试,并使用PostgreSQL作为真正的数据库。 我希望能够将Postgres的本机UUID类型与Hibernate一起使用,并在其String表示形式中将UUID与HSQL一起用于单元测试(因为HSQL没有UUID类型)。 我正在为Postgres和HSQL单元测试使用具有不同配置的持久性X

  • 3. 我不想在我的API中传递所有的参数作为请求体,有些只有查询、变量、输入有些只有查询和变量,就像上面的json数据,我想创建相同的模型,可以在其余的API中使用。目前,我已经为每个API创建了不同的模型。 公共类CreatetRequest{ } 这里我在所有API中复制了我的模型,所以我想创建三个模型类,其中包含所有必需的变量,这些变量在我的引导应用程序中都是常见的,但同时我必须避免在res

  • 问题内容: 假设我的角度SPA应用程序中有一个菜单,现在我希望向所有用户显示基本选项,例如家庭,关于我们,承运商的机会等。 我还希望有其他一些选项,例如管理用户,管理职位等,这些选项只会显示给管理员。 我们还假设我们有一个API访问点,可以为我提供用户角色,或者更好的是,该用户角色位于从/ api / users / me检索的对象内。 封装那些管理工具以防止普通用户查看的最佳方法是什么? 视图之

  • 这个问题比平常更高级。 假设您在keydape中有三个用户组:Group_Basic、Group_Client_A、Group_Client_B。 为“客户端A”和“客户端B”添加两个不同的LDAP用户联合设置。 将Group_Basic作为默认组。 如何从客户端A自动分配Group_Client_A给LDAP用户,并从客户端BGroup_Client_B组给LDAP用户? 欢迎任何想法!谢谢!