Я создал класс java с тем же именем, что и таблица из базы данных SQL, и, используя извлеченную информацию из этой таблицы, я создал несколько объектов из этого класса Java и сохранил их внутри ArrayList ,
CREATE TABLE `orderdetails` (
`orderNumber` int(11) NOT NULL,
`productCode` varchar(15) NOT NULL,
`quantityOrdered` int(11) NOT NULL,
`priceEach` decimal(10,2) NOT NULL,
`orderLineNumber` smallint(6) NOT NULL,
PRIMARY KEY (`orderNumber`,`productCode`),
KEY `productCode` (`productCode`),
CONSTRAINT `orderdetails_ibfk_1` FOREIGN KEY (`orderNumber`) REFERENCES `orders` (`orderNumber`),
CONSTRAINT `orderdetails_ibfk_2` FOREIGN KEY (`productCode`) REFERENCES `products` (`productCode`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
кортежи имеют повторяющиеся порядковые номера, например:
(10100,'S18_1749',30,'136.00',3),
(10100,'S18_2248',50,'55.09',2),
(10100,'S18_4409',22,'75.46',4),
Каждый кортеж затем превращается в java объект класса с тем же именем, что и таблица, и храниться в Arraylist.
public ArrayList<OrderDetails> getOrders(String tableName) throws SQLException{
ArrayList<OrderDetails>od=new ArrayList<OrderDetails>();
try {
String query="SELECT * FROM "+tableName;
Statement s= con.createStatement();
ResultSet rs= s.executeQuery(query);
while(rs.next()) {
int orderNumber=rs.getInt("orderNumber");
String productCode=rs.getString("productCode");
int quantityOrdered=rs.getInt("quantityOrdered");
double priceEach=rs.getDouble("priceEach");
int orderLineNumber=rs.getInt("orderLineNumber");
OrderDetails temp=new OrderDetails(orderNumber, productCode, quantityOrdered, priceEach, orderLineNumber);
od.add(temp);
}
}
catch(SQLException e) {
System.out.println("SQL exception happened while retriving data, close connection");
throw new RuntimeException(e);
}
return od;
}
Я пытаюсь L oop через ArrayList и вывести общую сумму значения (priceEach times Кол-воOrdered) для каждого checkNumber. Но если я просто просто oop через ArrayList один объект за объектом, это не сработает. Поскольку я просто увижу сумму для каждого объекта, а не каждого checkNumber, на консоли.
ArrayList<OrderDetails>od= this.getOrders("orderdetails");
for(int i=0;i<=od.size();i++) {
System.out.println(od.get(i).getPriceEach()*od.get(i).getQuantityOrdered());
}
Я ожидаю, что что-то подобное появится на консоли (без повторяющегося checkNumber)
CheckNumber 10100, total value: 8494.62 (if you add up the product between priceEach and quantityOrdered for the three tuples shown above earlier in my question is the rsult)
Короче говоря, есть ли способ объединить объекты с повторяющимися атрибутами в один? Я прошу прощения, если мой вопрос кажется очень расплывчатым, и вы не знаете точно, в чем проблема. Буду очень признателен, если вы попытаетесь связаться со мной и попросить дальнейших разъяснений, иногда очень трудно описать проблему, которая слишком конкретна c ..