Как мне указать метод управляемого компонента, чтобы сохранить данные на направленном ключе FOREIGN? - PullRequest
0 голосов
/ 10 марта 2020

В настоящее время я новичок в разработке проекта веб-сайта со спецификацией JSF. как вы все знаете, JSF должен включать x html для страницы сервера и управляемый компонент для определения метода класса, и я установил соединение между моим проектом и MySQL localhost.

Проблема в том, что я создал 1 основную таблицу для категорий пользователей, которые включают общие атрибуты, такие как имя, пол и т. Д. c. и я сделал две другие таблицы, которые определяют пользователя для его роли. Дело в том, что основная таблица User, содержащая user_ID в качестве PRIMARY KEY, станет ссылкой для двух других таблиц FOREIGN KEY, например: student, staff.

Если я создал регистрационную форму на странице сервера, как следует определить способ разделения данных в базе данных от неверной таблицы?

LoginBean. Java

private String fullName_;
private String gender_;
private String phoneNumber_;
private String IC_;
private String email_;
private String Address_;
private String password_;

public String getFullName_() {
    return fullName_;
}

public void setFullName_(String fullName_) {
    this.fullName_ = fullName_;
}

public String getGender_() {
    return gender_;
}

public void setGender_(String gender_) {
    this.gender_ = gender_;
}

public String getPhoneNumber_() {
    return phoneNumber_;
}

public void setPhoneNumber_(String phoneNumber_) {
    this.phoneNumber_ = phoneNumber_;
}

public String getIC_() {
    return IC_;
}

public void setIC_(String IC_) {
    this.IC_ = IC_;
}

public String getEmail_() {
    return email_;
}

public void setEmail_(String email_) {
    this.email_ = email_;
}

public String getAddress_() {
    return Address_;
}

public void setAddress_(String Address_) {
    this.Address_ = Address_;
}

public String getPassword_() {
    return password_;
}

public void setPassword_(String password_) {
    this.password_ = password_;
}



public String saveUser(LoginBean loginBean){
    UserDao dao = new UserDao(); //METODE SIMPAN KE DATABASE!!!
    User user = new User();
    user.setFullName(loginBean.getFullName_());
    user.setGender(loginBean.getGender_());
    user.setPhoneNumber(Integer.parseInt(loginBean.getPhoneNumber_()));
    user.setIc(loginBean.getIC_());
    user.setEmail(loginBean.getEmail_());
    user.setPassword(loginBean.getPassword_());
    dao.saveStudent(user);//untuk menyimpan di database
    Map<String,Object> sessionMapObj = FacesContext.getCurrentInstance().getExternalContext().getSessionMap();
        sessionMapObj.put("msg", "Data "+user.getIc() +"successfull!");
    return"/sukses.xhtml?faces-redirect=true";  
}

Пользователь. java

 private Integer userId;
 private String fullName;
 private String gender;
 private Integer phoneNumber;
 private String ic;
 private String email;
 private String address;
 private String password;
 private Set students = new HashSet(0);
 private Set staffs = new HashSet(0);

public User() {
}

public User(String fullName, String gender, Integer phoneNumber, String ic, String email, String address, String password, Set students, Set staffs) {
   this.fullName = fullName;
   this.gender = gender;
   this.phoneNumber = phoneNumber;
   this.ic = ic;
   this.email = email;
   this.address = address;
   this.password = password;
   this.students = students;
   this.staffs = staffs;
}

public Integer getUserId() {
    return this.userId;
}

public void setUserId(Integer userId) {
    this.userId = userId;
}
public String getFullName() {
    return this.fullName;
}

public void setFullName(String fullName) {
    this.fullName = fullName;
}
public String getGender() {
    return this.gender;
}

public void setGender(String gender) {
    this.gender = gender;
}
public Integer getPhoneNumber() {
    return this.phoneNumber;
}

public void setPhoneNumber(Integer phoneNumber) {
    this.phoneNumber = phoneNumber;
}
public String getIc() {
    return this.ic;
}

public void setIc(String ic) {
    this.ic = ic;
}
public String getEmail() {
    return this.email;
}

public void setEmail(String email) {
    this.email = email;
}
public String getAddress() {
    return this.address;
}

public void setAddress(String address) {
    this.address = address;
}
public String getPassword() {
    return this.password;
}

public void setPassword(String password) {
    this.password = password;
}
public Set getStudents() {
    return this.students;
}

public void setStudents(Set students) {
    this.students = students;
}
public Set getStaffs() {
    return this.staffs;
}

public void setStaffs(Set staffs) {
    this.staffs = staffs;
}

1 Ответ

0 голосов
/ 10 марта 2020

Полагаю, вы хотите взглянуть на jdb c. Java Подключение к базе данных позволяет создавать sql запросов в java. Тем не менее, в приложениях Java EE часто используется Java Persistence API (JPA). Это спецификация того, как вы можете хранить и извлекать Java -объекты из базы данных. Очень распространенной реализацией этого является Hibernate Framework.

Если вы хотите включить возможности Hibernate для вашего проекта jsf, следуйте этому руководству: https://howtodoinjava.com/hibernate/hibernate-3-introduction-and-writing-hello-world-application/. Если ваш проект не построен с использованием Maven, просто игнорируйте эту часть руководства.

С помощью спящего режима, например. Вы можете создать пользовательский объект. Вы можете следовать этому простому руководству по созданию сущностей: https://www.baeldung.com/jpa-entities

Теперь давайте предположим, что вы не хотите использовать ничего из этого и просто хотите решение по умолчанию с jdb c:

import java.sql.*;


public class Userdao
{

  public static void saveUser(User user)
  {
    try
    {
      value1 = user.getId();
      value2 = user.getFirstName();
      value3 = user.getLastName();
      String myUrl = "jdbc:somesql:localhost/test";
      //now we load the driver
      Class.forName("oracle.jdbc.driver.OracleDriver");  //download the correct driver of your database and add as library to your project
      Connection conn = DriverManager.getConnection(myUrl, "root", "");

      // our SQL SELECT query. 
      // if you only need a few columns, specify them by name instead of using "*"

      String addUserQuery = "INSERT INTO table_name (column1, column2, column3, ...) VALUES (" + value1 + ", " + value2 + ", " + value3, + "...);" //column1 could be Userid-Primarykey, 2 Name ...

      Statement addSt = conn.createStatement();
      addSt.executeQuery(addUserQuery)

      // create the java statement for retrieving

      String query = "SELECT + from table_name";
      Statement st = conn.createStatement();

      // execute the query, and get a java resultset
      ResultSet rs = st.executeQuery(query);

      // iterate through the java resultset
      while (rs.next())
      {
        int id = rs.getInt("id");
        String firstName = rs.getString("first_name"); //first_name being the column name
        String lastName = rs.getString("last_name");


        // print the Name
        System.out.format("%s, %s\n", id, firstName, lastName);
      }
      st.close();
    }
    catch (Exception e)
    {
      System.err.println("Got an exception! ");
      System.err.println(e.getMessage());
    }
  }
}

Ссылки на внешние ключи обрабатываются в базе данных, поэтому для. например. если вы хотите получить дочерние объекты, вам просто нужен запрос, который объединяет таблицы, а затем извлекает соответствующие значения из набора результатов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...