Je veux créer un rapport que vous sélectionnez product et storeName et renvoie toutes les ventes par date (dans une plage).Java Map <Chaîne, Carte <Chaîne, Entier> utiliser pour remplir les résultats
La vue db qui m'a aidé avec d'autres rapports ressemble à ceci: produit - store_name - Date
Jusqu'à présent, mon approche est de renvoyer tous les enregistrements de la db dans une liste et je procédez comme suit:
public void salesReport(String product, String store, String date){
List<RecordSalesInfo> salesResults = salesDao.getSales();
Map<String, Integer> mapper = new HashMap();
//calculation
for (RecordSalesInfo record : salesResults) {
StringBuilder key = new StringBuilder();
key.append(record.getProduct()).append(":")
.append(record.getStoreName()).append(":")
.append(record.getWageredDate()).append(":");
if (mapper.containsKey(key.toString())) {
Integer get = mapper.get(key.toString());
get++;
mapper.put(key.toString(), get);
} else {
mapper.put(key.toString(), 1);
}
}
for (String key : mapper.keySet()) {
if(key.toString.equals("Pen:London:13June2016"){
System.out.println("sales:" + mapper.get(key.toString);
}
}
}
la requête dans le salesDao (économie comme "RecordSalesInfo") est:
SELECT
rs.product AS product,
rs.store_name AS store,
rs.date AS date,
rs.product_id AS productId
FROM sales rs
ORDER BY rs.product,rs.store_name,rs.date
la raison pour laquelle je ne l'ai pas qUERY « Count (blabla) où product = 'a' et store_name = 'b' et date = 'c' "est parce que l'utilisateur modifie très souvent l'entrée en utilisant un jSlider (input = product, store, date), ce qui signifie trop de requêtes. J'ai donc pensé qu'il est préférable de prendre tous les résultats de DB puis d'afficher ce dont l'utilisateur a besoin. A) Y a-t-il un meilleur moyen de le faire?
B) Dans la phase suivante de l'utilisateur entrera seulement le produit et le magasin et je dois retourner la liste des ventes par date, qui ressemble à ceci:
Pen - Londres (entrée manuelle) 12June2016 100 15June2016 30 19July2016 67
Avec ce que je l'ai fait jusqu'à présent, je ne peux pas seulement les dates que je les ventes, et je dois « recherche » de la hashmap pour toutes les dates (gamme spécifique). Je pense comme une solution pour changer la clé de "product: storeName" une carte existante et avoir comme valeur une autre carte où la chaîne sera la date et l'entier le montant des ventes.
Encore une fois, y a-t-il une meilleure façon de faire cela?
merci pour votre réponse. Pensez-vous que quoi que je fasse avec la carte, il existe une autre façon de le faire avec Java, ou la meilleure façon d'utiliser les requêtes? –