2013-09-28 52 views
-1

我正在编写我的第一个Java程序(使用Struts2)收集3个字段的信息,将这些信息写入我的数据库,然后(在success.jsp上)显示我的数据库中的所有信息表。PreparedStatement/ResultSet和Setters/Getters

虽然我已经做了大量关于getters/setter和从数据库中访问/插入数据的数据(在我的例子中是一个MySQL数据库),但有一点我不清楚。

在我的动作类我有PreparedStatement S和ResultSet(写入和从MySQL数据库拉):

PreparedStatement pstmt = con.prepareStatement("INSERT INTO DBName(field1, field2, field3) VALUES(?, ?, ?);"); 
PreparedStatement pstmtSelect = con.prepareStatement("SELECT * FROM DBName"); 
{ 
    pstmt.setString(1, this.field1); 
    pstmt.setString(2, this.field2); 
    pstmt.setString(3, this.field3); 
    pstmt.executeUpdate(); 
    ret = SUCCESS; 

    ResultSet rset = pstmtSelect.executeQuery(); 
    while (rset.next()) { 
     field1 = rset.getString(1); 
     field2 = rset.getString(2); 
     field3 = rset.getString(3); 
     ret = SUCCESS; 
    } 
} 

我的问题是:我还需要在我的动作类下面的代码好还是冗余?还是它覆盖上述?

public String getField1() { 
    return this.field1; 
} 

public void setField1(String field1) { 
    this.field1 = field1; 
} 

public String getField2() { 
    return this.field2; 
} 
public void setField2(String field2) { 
    this.field2 = field2; 
} 

public String getField3() { 
    return this.field3; 
} 

public void setField3(String field3) { 
    this.field3 = field3; 
} 
+0

(谢谢你的加入OGNL标签罗马!) – ea0723

+1

一两件事有关JDBC代码更好地移动到DAO层,而不是它用行动代码混合在一起。通过分离不同图层的代码来使用MVC框架。 –

+0

Thanks @RomanC - 伟大的建议(在Ruby中,我创建了单独的模型,所以这对我来说非常合适)。 – ea0723

回答

1

你不需要操作类中的getter和setter。你只需要它在持有3个字段的bean中。在动作类中,您可以创建该bean的实例并调用setter并设置从结果集中获得的值。在显示的时候,你可以调用getters来获取刚才在bean上设置的值。

ResultSet rset = pstmtSelect.executeQuery(); 
      FieldBean field = new FieldBean();   
      while (rset.next()) { 
       field.setField1(rset.getString(1)); 
       field.setField2(rset.getString(2)); 
       field.setField3(rset.getString(3)); 
       ret = SUCCESS; 
      } 
+0

谢谢@Pratik。只是为了确保我理解你的陈述“在显示时你可以调用获得者来获得你刚刚在bean上设置的值” 你的意思是在jsp中我会设置(一个s:每个字段的属性)? – ea0723

+0

由于您使用的是struts,因此您无需致电获取者。该框架将为您做到这一点。是的,但你必须为每个字段指定一个s:property标签 –

+0

太好了,谢谢@Pratik! – ea0723