(SSH)Hibernate 使用session.createSQLQuery()语句进行多表联立查询提取结果集并返回给jsp页面的具体方式

一.使用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()方式

(未完,有空了再补充)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值