【发布时间】:2021-07-12 01:04:07
【问题描述】:
这是我的数据库的一个例子, 客户(idCustomer,姓名,电子邮件...) 产品(idProduct,name,price ...) 订单(idOrder,idProduct,idCustomer,...)
如何在订单类中声明 idProduct
public class Order{
private int idCustomer ;
private int idProduct ;
private int idOrder ;
//Getters and setters
}
或者
public class Order{
private Customer customer ;
private Product product ;
private int idOrder ;
//Getters and Setters }
当我更改属性时,如第二个 sn -p 所示。我在使用带有 ResultSet 的 Setter 时遇到了一个问题,因此我在循环中创建了一个 Customer 和 Product 变量。
public static List<Order> getAllOrder() {
List<Order> list=new ArrayList<Order>() ;
Customer c = new Customer() ;
Product p = new Product()
try {
Connection con =DB.getCon() ;
java.sql.PreparedStatement ps=con.prepareStatement("select * from Order") ;
ResultSet rs=ps.executeQuery() ;
while (rs.next()) {
Order o =new Order() ;
o.setIdOrder(rs.getInt(1)) ;
c.setIdCustomer(rs.getInt(2)) ;
o.setCustomer(c) ;
p.setIdProduct(rs.getInt(3)) ;
c.setProduct(p) ;
list.add(o) ;}
ps.close() ;
con.close();
}catch (Exception e ) {System.out.println(e) ; }
return list ;}
我这样做的原因是我希望我的项目符合 OOP 概念,并且它有助于 JOIN 查询,因此我可以检索未在 order 类中声明的信息。 谢谢大家
【问题讨论】:
-
我知道您的代码可以正常工作并且您没有问题。那么也许Code Review 更适合您的问题?我只想说你应该在
while循环中创建Customer类和Product类的新实例。检查在while循环内创建Customer和Product对象之间的list元素是否与您现在创建单个Customer对象和Product对象的方式有任何区别在进入while循环之前。
标签: java mysql oop resultset pojo