一.使用addScalar()方式
**具体思路:
(因博客内使用’<’’>'这个符号对时会自动隐藏,所以全部改成全角符号《》)
1.编写一个新class CjFindAllResult,内部含有所有需要查询的列名的同名属性,以及各属性的getter和setter函数,用来接收createSQLQuery()的结果集;
2.因为session.createSQLQuery()返回的是一个Object对象,无法自动存储进持久化对象类中,所以使用(List《Object》) session.createSQLQuery()语句,并在后面添加.addScalar(String,type).list()语句,用来提取结果集内的对象存入List《Object》list中;
3.使用new ArrayList《CjFindAllResult》()方式new一个List《CjFindAllResult》对象Lcj;
4.用遍历的方式将list对象用Object ob分个提取出来,并每次都new一个CjFindAllResult对象(cr),使用setter函数将ob内的每个属性值储存进cr(ob使用下标来提取属性值ob[0~5]),然后将每个新创建的cr依次调用Lcj.add(cr)函数存储进Lcj对象内;
5.至此就可以将List《CjFindAllResult》 Lcj对象作为结果集进行返回;也可以调用Map<String, Object> request=(Map<String, Object>)ActionContext.getContext().get(“request”);
获取request对象,再调用request.put(“list”,Lcj)函数,将Lcj对象的数据存储进request对象内
6.在jsp页面使用《s:iterator value="#request.list" var=“cj”》
《s:property value="#cj.xh"/》等方式就可以提取各个数据的值了
具体代码如下:**
package org.tool;
public class CjFindAllResult {
private String xh;
private String xm;
private String kcm;
private Integer cj;
private Integer xf;
private String kch;
public String getXh() { return xh; }
public void setXh(String xh) { this.xh = xh; }
public String getXm() { return xm; }
public void setXm(String xm) { this.xm = xm; }
public String getKcm() { return kcm; }
public void setKcm(String kcm) { this.kcm = kcm; }
public Integer getCj() { return cj; }
public void setCj(Integer cj) { this.cj = cj; }
public Integer getXf() { return xf; }
public void setXf(Integer xf) { this.xf = xf; }
public String getKch() { return kch; }
public void setKch(String kch) { this.kch = kch; }
}
package org.dao;
public List<CjFindAllResult> findAllCj(){
Session session=getSession();
Transaction ts=session.beginTransaction();
List<Object[]> list=
(List<Object[]>)session.createSQLQuery
("SELECT c.xh,a.xm,b.kcm,c.cj,c.xf,c.kch from Xsb a,Kcb b,Cjb c where a.xh=c.xh AND b.kch=c.kch")
.addScalar("xh",StandardBasicTypes.STRING)
.addScalar("xm",StandardBasicTypes.STRING)
.addScalar("kcm",StandardBasicTypes.STRING)
.addScalar("cj",StandardBasicTypes.INTEGER)
.addScalar("xf",StandardBasicTypes.INTEGER)
.addScalar("kch",StandardBasicTypes.STRING)
.list();
List<CjFindAllResult> Lcj=new ArrayList<CjFindAllResult>();
for(Object[] ob:list)
{
CjFindAllResult cr=new CjFindAllResult();
cr.setXh(ob[0].toString());
cr.setXm(ob[1].toString());
cr.setKcm(ob[2].toString());
cr.setCj( (Integer) ob[3]);
cr.setXf((Integer) ob[4]);
cr.setKch(ob[5].toString());
Lcj.add(cr);
}
ts.commit();
session.close();
return Lcj;
};
//action内的函数:
public String findAll(List<CjFindAllResult> Lcj){
Map<String, Object> request=(Map<String, Object>)ActionContext.getContext().get("request");
request.put("list",Lcj);
return SUCCESS;
}
JSP页面代码:
<s:iterator value="#request.list" var="cj">
<tr>
<td><s:property value="#cj.xh"/></td>
<td><s:property value="#cj.xm"/></td>
<td><s:property value="#cj.kcm"/></td>
<td><s:property value="#cj.cj"/></td>
<td><s:property value="#cj.xf"/></td>
<td><s:property value="#cj.kch"/></td>
</tr>
</s:iterator>
二.使用addEntity()方式
(未完,有空了再补充)