多表关系通过外键关联时,常会使用id表示对象之间的关系,而在显示时却常常要显示对象的名称,如果每次用到都要从数据库中查找似乎很耗费资源,那么我们可以id,name
组织成map集合,很适合在前端显示。
具体做法:
1.DAO
public Map<Integer, String> findOwners() {
Map<Integer, String> map = new HashMap<Integer, String>();
Connection conn = C3p0Util.getConnection();
String sql = "select id,name from owner";
ResultSet rs = null;
Statement stmt = null;
try {
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
while(rs.next()){
Integer key = rs.getInt("id");
String value = rs.getString("name");
map.put(key, value);
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
try {
if(rs!=null)
rs.close();
if(stmt!=null)
stmt.close();
if(conn!=null)
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return map;
}
2.ACTION:
private Map<Integer, String> map = null;
map = od.findOwners();
session.setAttribute("ow", map);
3.JSP
<s:select name="owner_id" list="#session.ow" listKey="key" listValue="value" label="主人"></s:select>
这样便实现了在选择框中显示人名,选择框向后台传的时人的id。