业务有这个需求
hql查询多张表,每张表呢只需要其中部分字段(页面显示使用)如:
select a.name,a.age,b.price,b.time,c.number from A a,B b ,C c where a.id=b.id and b.time=c.time;
现在 返回一个List(有可能满足条件的有多个)。我应该怎么做才能在遍历显示出来
使用 jsp+ssh2
hql查询多张表,每张表呢只需要其中部分字段(页面显示使用)如:
select a.name,a.age,b.price,b.time,c.number from A a,B b ,C c where a.id=b.id and b.time=c.time;
现在 返回一个List(有可能满足条件的有多个)。我应该怎么做才能在遍历显示出来
使用 jsp+ssh2
你可以建立一个JavaBeanselect a.name,a.age,b.price,b.time,c.number from A a,B b ,C c where a.id=b.id and b.time=c.time;JavaBean
class X{
private String aname;
private int aage;
private double bprice;
private Date btime;
private int cnumber;
//setter and getter;
}
查询的东西装这个DTO里就可以了。使用起来跟其他Domian没区别、
根据你的HQL来建立你需要的字段以及属性,然后在前台就好遍历了、
2、如果你不想建立DTO。可以三表联查(需要的是查三个表全部字段,只要带上条件就行)(数据量大的话、效率肯定是很差的、)、用一个list 接就好、然后你在前台获取可以使用struts标签迭代<s:iterator value=“你的list”var=“x”> a的name字段值是:<s:property value="#x[0].name"/>
b的price字段值是:<s:property value="#x[1].price"/>
c的number字段值是: <s:property value="#x[2].number"/></s:iterator>
SQLQuery sqlQuery = session.createSQLQuery(hql.toString()).setResultTransformer(new AliasToBeanResultTransformer(X.class));//X为你的DTO javaBean
//transformer 有几种写法 你可以百度下、我测试写的是这种可以通过、
List list = sqlQuery.list();
return list;
写错 。 是hibernate的Query 不是SQLQuery
<a href='book_list.action?id=<s:property value="#c.id"/>&pid=<s:property value="pid"/>&p=1'><s:property value="#c.name" /> (<s:property value="pnum" />)</a>
</s:iterator>
<s:iterator value="list" var="bean">
<s:property value="#bean.attribute" />
...
</s:iterator>