Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java dto与dao实现_Java_Swing_Jdbc - Fatal编程技术网

Java dto与dao实现

Java dto与dao实现,java,swing,jdbc,Java,Swing,Jdbc,按钮单击事件上的代码 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt){ String login, password; login = jTextField1.getText().trim(); password = jTextField2.getText().trim(); System.ou

按钮单击事件上的代码

 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt){                                         

  String login, password;

   login = jTextField1.getText().trim();
   password = jTextField2.getText().trim();

    System.out.println("hello");   
    RegisterDAO r = new RegisterDAO();
    r.insert(login, password);


}  
dao类的代码

 public class RegisterDAO {

 private String login, password;

public void insert(String login ,String password)
{
    this.login= login;
    this.password = password;

    RegisterDTO r = new RegisterDTO();
    r.setLogin(login);
    r.setPass(password);

 java.sql.Connection con = new DBConnection().getConnection();
   if (con!=null){
    System.out.println("the connection object is active ");

    PreparedStatement pst;
    String Q;
    int x=1;

    Q="insert into x(a,b) values(?,?)";
   try {
   pst=con.prepareStatement(Q);
   pst.setString(x++, login );
   pst.setString(x++,password);

   int a=pst.executeUpdate();
     System.out.println(a);

    }
    catch (Exception ex )
    {
        ex.printStackTrace();
    }
//JOptionPane.showMessageDialog(null, s, s, x, null);
}                  
    public void ret(String login  )
{
    login= this.login ; 

      java.sql.Connection con = new DBConnection().getConnection();
   if (con!=null){
    System.out.println("the connection object is active ");

    PreparedStatement pst;
    String Q;
    int x=1;

    Q="select * form x where a=?";
   try {
   pst=con.prepareStatement(Q);
       pst.setString(x++, login );


       ResultSet rs= null;      
        rs = pst.executeUpdate();


}
我的dto课

 public class RegisterDTO {
private String a;
private String b;
public void setLogin(String a)
{
    this.a = a ;
    System.out.println(a);
}
public String getLogin()
{
    return a;
}
public void setPass(String b)
{
    this.b = b;
    System.out.println(b);

}
public String  getPass()
{
    return b;
}       
1) 我的问题是我无法保留setter和getter方法存储在dto类中的值。使用dto获取值的方法有哪些。 我还想访问另一页上的值,但无法获取该值dto类中的print语句显示该值存储在变量中 我正在创建的应用程序是基于swing的,我不知道swing是否支持会话管理,如果它支持会话,那么请帮助我实现它

2) 我想知道我在DAO和DTO的情况下所遵循的方法是否正确

3) 我想知道,要访问每个页面的dto,我是否需要创建dto的对象来访问该页面,如果是这种情况,是否会导致创建多个对象时的歧义

4) 我能否通过getter方法直接访问存储在dto中的值(无需数据库访问)。我已经创建了ret()方法来从dao类的数据库中检索数据

 public class RegisterDAO {

 private String login, password;

public void insert(String login ,String password)
{
    this.login= login;
    this.password = password;

    RegisterDTO r = new RegisterDTO();
    r.setLogin(login);
    r.setPass(password);

 java.sql.Connection con = new DBConnection().getConnection();
   if (con!=null){
    System.out.println("the connection object is active ");

    PreparedStatement pst;
    String Q;
    int x=1;

    Q="insert into x(a,b) values(?,?)";
   try {
   pst=con.prepareStatement(Q);
   pst.setString(x++, login );
   pst.setString(x++,password);

   int a=pst.executeUpdate();
     System.out.println(a);

    }
    catch (Exception ex )
    {
        ex.printStackTrace();
    }
//JOptionPane.showMessageDialog(null, s, s, x, null);
}                  
    public void ret(String login  )
{
    login= this.login ; 

      java.sql.Connection con = new DBConnection().getConnection();
   if (con!=null){
    System.out.println("the connection object is active ");

    PreparedStatement pst;
    String Q;
    int x=1;

    Q="select * form x where a=?";
   try {
   pst=con.prepareStatement(Q);
       pst.setString(x++, login );


       ResultSet rs= null;      
        rs = pst.executeUpdate();


}
上述代码导致错误,即结果集无法处理executeUpdate()方法中的整数。我不知道整数值是如何被转换到结果集中的,所以我需要为此进行转换吗。我还想知道如何在结果集显示整个元组时访问各个字段。结果集如何将值存储到getter方法的各个字段中

1) 我的问题是,我无法保留现有的价值观 由setter和getter方法存储在dto类中。什么 是使用dto获取值的方法。我还想访问 另一页上的值,但我无法在 dto类中的print语句显示值存储在 我正在创建的应用程序变量是基于swing的 不知道是swing支持会话管理,如果是的话 支持该课程,而不是帮助我实现它

DTO类不是持久性的,它和DTO之间似乎没有任何联系。由于它没有持久化任何内容,因此您将无法在DTO类中重新加载项,除非您通过DAO类来存储/检索值

2) 我想知道的是,在这种情况下,我所遵循的方法 DAO和DTO是否正确

我不这么认为。DAO是一个数据访问对象,这在您的示例中是正确的,因为它提供了执行基本CRUD操作的功能。另一方面,我很确定您对DTO的实现是不正确的。DTO(就内存而言)代表数据传输对象。简而言之,它应该表示特定对象在数据库中具有的字段的子集,以便您可以使用更轻量级的对象来表示数据库实体。例如,数据库中的
用户
对象可以具有诸如
PK
UID
DateCreated
DateModified
名称
密码散列
等字段。您的
UserDTO
将具有较少的字段,例如
UID
名称
。DAO层通常会产生DTO对象

3) 我想知道访问dto的每个页面都要做什么 我需要创建dto的对象来访问它,如果它是 在创建多个对象时,是否会导致歧义

是的,你必须这样做。另一种方法是使用
Singleton
数据模式在所有类中共享和重用同一DAO实例

4) 我能否直接访问存储在dto中的值 通过getter方法(无数据库访问)。我创造了 方法从我的dao类的数据库中检索数据

在这种情况下,DTO类要么是冗余的,要么是误导性的。我建议你把它拿走

至于您的最后一个问题,我建议您阅读Oracle教程,了解有关如何使用JDBC的更多信息。

“上面的代码导致错误,结果集无法处理executeUpdate()方法中的整数”。这是因为返回的不是结果集,而是整数(请参阅API)。我想你的意思是它会像预期的那样返回结果集。