java oracle问题 如何将查询结果在页面显示 50
现在有如下查询结果:RQIDNAMEMONEY2011-81001路径11002011-81002路径2802011-91001路径12002011-91002路径210...
现在有如下查询结果:
RQ ID NAME MONEY
2011-8 1001 路径1 100
2011-8 1002 路径2 80
2011-9 1001 路径1 200
2011-9 1002 路径2 100
2011-10 1001 路径1 250
2011-10 1002 路径2 300
2011-11 1001 路径1 150
2011-11 1002 路径2 200
2011-12 1001 路径1 180
2011-12 1002 路径2 250
2012-1 1001 路径1 180
2012-1 1002 路径2 340
2012-2 1001 路径1 240
2012-2 1002 路径2 260
... ... ... ...
以上是数据库查出来的List 现在页面上要求这样展示:(上面的日期是读出来的!)
路径名称 2011-8 2011-9 2011-10 2011-11 2011-12 2012-1 2012-2
路径1 100 200 250 150 180 180 240
路径2 80 100 300 200 250 340 260
那位哥哥知道,麻烦贴码出来,感激不尽!!!! 展开
RQ ID NAME MONEY
2011-8 1001 路径1 100
2011-8 1002 路径2 80
2011-9 1001 路径1 200
2011-9 1002 路径2 100
2011-10 1001 路径1 250
2011-10 1002 路径2 300
2011-11 1001 路径1 150
2011-11 1002 路径2 200
2011-12 1001 路径1 180
2011-12 1002 路径2 250
2012-1 1001 路径1 180
2012-1 1002 路径2 340
2012-2 1001 路径1 240
2012-2 1002 路径2 260
... ... ... ...
以上是数据库查出来的List 现在页面上要求这样展示:(上面的日期是读出来的!)
路径名称 2011-8 2011-9 2011-10 2011-11 2011-12 2012-1 2012-2
路径1 100 200 250 150 180 180 240
路径2 80 100 300 200 250 340 260
那位哥哥知道,麻烦贴码出来,感激不尽!!!! 展开
3个回答
展开全部
你的这种实现方式并不好,麻烦,而且分页不好弄,我建议使用交叉表,不过先按你的要求贴代码吧。
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
Test t = new Test();
Product p1 = t.new Product();
p1.setID("1001");
p1.setNAME("路径1");
p1.setRQ("2011-8");
p1.setMONEY(100);
Product p2 = t.new Product();
p2.setID("1002");
p2.setNAME("路径2");
p2.setRQ("2011-8");
p2.setMONEY(80);
Product p3 = t.new Product();
p3.setID("1001");
p3.setNAME("路径1");
p3.setRQ("2011-9");
p3.setMONEY(200);
Product p4 = t.new Product();
p4.setID("1002");
p4.setNAME("路径2");
p4.setRQ("2011-9");
p4.setMONEY(100);
List<Product> result = new ArrayList<Product>();// 查询出的对象
result.add(p1);
result.add(p2);
result.add(p3);
result.add(p4);
// 以下代码开始处理
Map<String, Map<String, Integer>> m = new HashMap<String, Map<String, Integer>>();
for (Product p : result) {
if (!m.containsKey(p.getNAME())) {// 无路径x的行
Map<String, Integer> sub = new HashMap<String, Integer>();
sub.put(p.getRQ(), p.getMONEY());
m.put(p.getNAME(), sub);
} else {// 已经有 路径x的行
if (!m.get(p.getNAME()).containsKey(p.getRQ())) {// 无指定日期的列
m.get(p.getNAME()).put(p.getRQ(), p.getMONEY());
}
}
}// 循环完以后,已经形成类型LZ需要的内容,直接在页面上输出就可以了
// 这里写个排序,将sub按日期排序
// 输出方式
for (String name : m.keySet()) {
Map<String, Integer> sub = m.get(name);
System.out.println("<tr>");
System.out.println("<td>" + name + "<td>");
for (String rq : sub.keySet()) {
System.out.println("<td>" + sub.get(rq) + "</td>");
}
System.out.println("</tr>");
}
}
class Product {
String RQ;
String ID;
String NAME;
int MONEY;
public String getRQ() {
return RQ;
}
public String getID() {
return ID;
}
public String getNAME() {
return NAME;
}
public int getMONEY() {
return MONEY;
}
public void setRQ(String rQ) {
RQ = rQ;
}
public void setID(String iD) {
ID = iD;
}
public void setNAME(String nAME) {
NAME = nAME;
}
public void setMONEY(int mONEY) {
MONEY = mONEY;
}
}
}
如果你需要显示
路径名称 2011-8 2011-9 2011-10 2011-11 2011-12 2012-1 2012-2
这些的话,循环一次,把sub的key也输出来就可以了!
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
Test t = new Test();
Product p1 = t.new Product();
p1.setID("1001");
p1.setNAME("路径1");
p1.setRQ("2011-8");
p1.setMONEY(100);
Product p2 = t.new Product();
p2.setID("1002");
p2.setNAME("路径2");
p2.setRQ("2011-8");
p2.setMONEY(80);
Product p3 = t.new Product();
p3.setID("1001");
p3.setNAME("路径1");
p3.setRQ("2011-9");
p3.setMONEY(200);
Product p4 = t.new Product();
p4.setID("1002");
p4.setNAME("路径2");
p4.setRQ("2011-9");
p4.setMONEY(100);
List<Product> result = new ArrayList<Product>();// 查询出的对象
result.add(p1);
result.add(p2);
result.add(p3);
result.add(p4);
// 以下代码开始处理
Map<String, Map<String, Integer>> m = new HashMap<String, Map<String, Integer>>();
for (Product p : result) {
if (!m.containsKey(p.getNAME())) {// 无路径x的行
Map<String, Integer> sub = new HashMap<String, Integer>();
sub.put(p.getRQ(), p.getMONEY());
m.put(p.getNAME(), sub);
} else {// 已经有 路径x的行
if (!m.get(p.getNAME()).containsKey(p.getRQ())) {// 无指定日期的列
m.get(p.getNAME()).put(p.getRQ(), p.getMONEY());
}
}
}// 循环完以后,已经形成类型LZ需要的内容,直接在页面上输出就可以了
// 这里写个排序,将sub按日期排序
// 输出方式
for (String name : m.keySet()) {
Map<String, Integer> sub = m.get(name);
System.out.println("<tr>");
System.out.println("<td>" + name + "<td>");
for (String rq : sub.keySet()) {
System.out.println("<td>" + sub.get(rq) + "</td>");
}
System.out.println("</tr>");
}
}
class Product {
String RQ;
String ID;
String NAME;
int MONEY;
public String getRQ() {
return RQ;
}
public String getID() {
return ID;
}
public String getNAME() {
return NAME;
}
public int getMONEY() {
return MONEY;
}
public void setRQ(String rQ) {
RQ = rQ;
}
public void setID(String iD) {
ID = iD;
}
public void setNAME(String nAME) {
NAME = nAME;
}
public void setMONEY(int mONEY) {
MONEY = mONEY;
}
}
}
如果你需要显示
路径名称 2011-8 2011-9 2011-10 2011-11 2011-12 2012-1 2012-2
这些的话,循环一次,把sub的key也输出来就可以了!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是不是直接画一个table就行了?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
根据自己的需求查询对应列进行组合
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询