java 将集合中的对象转化成成实体Bean

做java项目的时候,遇到了查询的问题,我用到的是hibernate框架,但hibernate的hql语句有时候用起来不是很顺手,所以,在用到查询的时候,时不时还是会用到createquery方法和createsqlquery方法的,下面就这两个方法提出我自己做项目的一点感悟。

createquery方法:

这个方法要求传个hql语句的值,注意:一定要是hql语句,原生态的sql是行不通的,当hql语句中有多个参数,而我们又不确定具体有几个的时候怎么办呢?可以采用如下方法:

string hql = "from fasprelbus r where r.buscode=? and r.faspcode=?";

object[] obj = new object[]{buscode,faspcode};

public list getfasprelbus(string hql ,object[] values){

query q = this.getsession().createquery(hql);

for(int i=0;i

这里又遇到了一个问题,多参数是解决了,如果想要把取出来的集合转化成list类型的怎么办呢?

如果需要转化成bean类型,有两种方法,第一种是查询的时候用createsqlquery方法,另一种是用createquery方法,但还需要转化一次,下面讲解如何转化:

方法一:.假如这个bean的名字叫fasprelbus,有如下属性:

private integer id;

private string faspcode;

private string faspname;

private string fasppassword;

private string buscode;

private string busname;

private string buspassword;

private string systemflag;

那么,获取到集合后,可以将集合中的每一个对象取出,转化成object数组类型,然后将数组中的每个元素赋给对象对应的每个属性,如下:

list frblist = new arraylist();

list rlist = fasprelbusdao.findrelbus(usercode);

for(int i=0;i

object[] obj = (object[]) rlist.get(i);

fasprelbus frb = new fasprelbus();

frb.setid(obj[0].tostring());

frb.setfaspcode(0bj[1].tostring());

frb.setfaspname(obj[2].tostring());

frb.setfasppassword(obj[3].tostring());

......

frblist.add(frb);

}

方法二:

查询数据的时候采用createsqlquery方法,sql语句采用原生态sql语句,不要用hql,比如说查询表fasp_rel_bus的时候

用:

string sql = "select * from fasp_rel_busf where f.buscode='zhoule' and f.faspname='周乐'" 即可

list results = this.getsession().createsqlquery(sqlstring).addentity(fasprelbus.class).list();

因为createsqlquery方法有一个addentity方法,可以将对象转化成实体bean,这样获取到的list是经过转化了的,取对象的时候可以直接将集合中的每个对象赋值给bean,如下:

fasprelbus f = (fasprelbus)results.get(0);

以上是将集合中取出的对象转化成实体bean的一点愚见,如还有更好的方法,望不吝赐教,共同学习,共同进步!


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值