按钮的点击事件的代码
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);
}
我的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的,我不知道如果它支持会话而不是帮助我实现它,那么会支持会话管理。
2)我想知道我在DAO和DTO的情况下所遵循的approch是否合适
3)我想知道要访问每个页面的dto我是否需要创建dto的对象来访问它,如果是这样的话,它会导致多重对象创建的歧义
4)我能否通过getter方法直接访问存储在dto中的值(无数据库访问)。我创建了ret()方法来从我的dao类
中的数据库中检索数据 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方法的各个字段
答案 0 :(得分:2)
1)我的问题是我无法保留那些值 由setter和getter方法存储在dto类中。什么 是使用dto获取价值的方法。我也想访问 在其他页面上的值,但我无法获得该值 dto类中的print语句显示该值存储在 变量我正在创建的应用程序是基于swing和i 不知道那是摇摆支持会话管理,如果它 支持会议,而不是帮助我实现它。
DTO类不是持久性的,它与DTO之间似乎没有任何联系。由于它没有持久化,因此除非您通过DAO类来存储/检索值,否则您将无法在DTO类中重新加载项目。
2)我想知道我正在追踪的approch DAO和DTO是否合适
我不这么认为。 DAO是一个数据访问对象,在您的示例中是正确的,因为它产生执行基本CRUD操作的功能。另一方面,我很确定你的DTO实现是不正确的。 DTO(就存储器而言)代表数据传输对象。简而言之,它应该表示特定对象在数据库中具有的字段的子集,以便您可以使用更轻量级的对象来表示数据库实体。例如,数据库中的User
对象可能包含PK
,UID
,DateCreated
,DateModified
,Name
,{{}等字段1}}等。您的Password_Hash
字段较少,例如UserDTO
和UID
。 DAO层通常会产生DTO对象。
3)我想知道要访问每个页面的dto 我需要创建dto的对象来访问它,如果那是 这种情况会导致多重对象创建的歧义
是的,你必须这样做。另一种方法是使用Name
数据模式在所有类中共享和重用相同的DAO实例。
4)我能否直接访问存储在dto中的值 通过getter方法(没有数据库访问)。我创造了 ret()方法从我的dao类
中的数据库中检索数据
在这种情况下,DTO类要么是冗余的,要么是误导性的。我建议你删除它。
关于您的上一个问题,我建议您查看this Oracle教程,了解有关如何使用JDBC的更多信息。