说明:如果在页面显示的内容不是来自同一张表,则可以将查询的每一个字段及内容封装为一个Map对象,key为所查字段名,类型为字符串,value为所查字段值,因为值可以有很多种类型,所以需要设为Object类型,然后将所有集合对象存放到List中,这样就可以实现所查字段不来自同一张表的值的引用。本例中有两张表,产品表Product与类型表Type,两表通过类型号tid关联。
a.productDAOImpl :
findAllProducts()方法代码:
public List<Map<String, Object>> findAllProducts() {
List<Map<String,Object>> list=new ArrayList<Map<String,Object>>();
try{
conn=DBUtil.getConnection();
String sql="SELECT pid,pname,price,address,product.`desc`,product.tid,tname FROM product,type WHERE product.tid=type.tid";
ps=conn.prepareStatement(sql);
rs=ps.executeQuery();
while(rs.next()){
Map<String,Object> map=new HashMap<String,Object>();
map.put("pid",rs.getInt("pid"));
map.put("pname",rs.getString("pname"));
map.put("price",rs.getDouble("price"));
map.put("address",rs.getString("address"));
map.put("desc",rs.getString("desc"));
map.put("tid",rs.getInt("tid"));
map.put("tname",rs.getString("tname"));
list.add(map);
}
}catch(Exception e){
e.printStackTrace();
}finally{
DBUtil.close(rs, ps, conn);
}
return list;
}
findAllProductsByPages(Integer currentPage, Integer pageSize)方法代码:
public List<Map<String, Object>> findAllProductsByPages(Integer currentPage, Integer pageSize) {
List<Map<String,Object>> list=new ArrayList<Map<String,Object>>();
try{
conn=DBUtil.getConnection();
String sql="SELECT pid,pname,price,address,product.`desc`,product.tid,tname FROM product,type WHERE product.tid=type.tid LIMIT ?,?";
ps=