//电影的javaBean
public class Movie {
private int id;
private String name;
private Category category; //记录了电影所属的分类,比如喜剧,悲剧
private Language language; //记录了电影所属的语言,比如中文,英文}//种类的JavaBeanpublic
class Category {
private int id;
private String name; }//语种的JavaBeanpublic
class Language{
private int id;
private String name; }我想在JSP前台显示所有电影的具体信息----将电影的类别和语言都显示出来,使用org.apache.commons.dbutils框架怎么做?JSP界面如下:(将所有的movie查询出来传到Jsp界面,显示出来!!!!!)
<c:forEach var="movie" items="${movies}">
<tr>
<td>${movie.id}</td>
<td>${movie.name}</td>
<td>${movie.maker}</td>
<td>${movie.category.name}</td>
<td>${movie.language.name}</td>
</tr>
</c:forEach>这是我之前写的数据库查询代码,但是发现并没有查询出来电影的种类和语言信息,导致前台显示不出来???
// @Override
// public List getAll(){
// try {
// Connection conn = JdbcUtils.getConnection();
// QueryRunner runner = new QueryRunner();
// String sql = "select * from movie";
// return (List) runner.query(conn, sql, new BeanListHandler(Movie.class));
// } catch (Exception e) {
// throw new RuntimeException(e);
// }
// }
这是我之前的做法,但是没有查询出movie的category属性
不过我猜测取不到值是因为category不是值类型而是一个类,handler无法自动mapping试试下面的能否参考(网上摘录的)(List<State>) new QueryRunner().query(conn, "select * from states", new BeanListHandler(State.class,new BasicRowProcessor(new StateBeanProcessor())));public class StateBeanProcessor extends BeanProcessor { @Override
protected int[] mapColumnsToProperties(ResultSetMetaData rsmd, PropertyDescriptor[] props) throws SQLException {
int[] mapping = super.mapColumnsToProperties(rsmd, props);
/*Map database columns to fields in the order in which they appear
1st column in the DB will be mapped to 1st field in the Java
class and so on.. */
for(int i=0;i<mapping.length;++i) {
mapping[i]=i;
}
}
}