hibernate里如何取出list值
public class Base{
private SessionFactory sessionFactory;
public SessionFactory getSessionFactory()
{
return sessionFactory;
}
public void setSessionFactory(SessionFactory sessionFactory)
{
this.sessionFactory = sessionFactory;
}
public final Session getSession()
{
return this.sessionFactory.getCurrentSession();
}
@SuppressWarnings("unchecked")
public List executeQuery(String hql)
{
return (List) this.getSession().createQuery(hql).list();//执行传入的sql,并返回一个list
}
}
得到的是一个List,要取就遍历List,然后obj[0],obj[1],obj[2]...
比如你返回的变量为 list;里面放的是一个UserBean对象,UserBean里有属性(你所说的字段)username ,userpassword,现在你的问题是把username放入session里,则:
UserBean user=(UserBean)list.get(0);
session.setAttribe("USERNAME",user.getUsername());
就可以了.
你以后要用的时候,直接使用:
session.getAttribe("USERNAME");就可以得到值了
这个要具体看你如何使用hibernate的了。
如果用了sql语句模式的:比如select max()..之类的,产生的是List 是对象数组,得到的List 要用Object[] 来装。如果是这种情况:
List list = ...
Iterator iterator = list.iterator();
while(iterator.hasNext()){
Object[] obj = (Object[])iterator.next();
String str = obj[0];
...
}
第二种情况就是对象模式的,你的语句格式是:FROM User ...
User为你的对象,这种产生的List就完全是User对象的List
可以直接 User user = (User).get(0);或者是用Iterator遍历所有的List
1, 打开Session,(或开启事务);
2, 实例化Bean,并获得实例;
3, Query query = sesson.createQuery(抓取的数据);
4, query.setParameter(key,value);//
5, List list=query.list();
6, (或提交事务),关闭Session;
只有一行的原因很可能是你在sesson.createQuery里抓取数据的方式不正确,你试试全表提取; 如果要把提取的List放在JSP页面里: session.setAttribute("array",list); 至于list你可以做成JavaBean在JSP页面里直接引用!
List list = new DAO().method(); 用list接收你方法返回的数据(方法必须返回的是List 类型)
for(int i = 0;i < list.size; i ++){
BeanName bean = (BeanName)list.get(i);
} //把list中的值取出来放在一个javaBean中(javaBean中有你要的列的属性)
request.getSession().setAttribute("自己取一个", bean);//把bean对像存到session里
//在action里取session中存的值
request.getSession().getAttribute("上面存的名字");
最后用bean.getAll();//你想要哪一个属性的结果
list.get(0);//你要确定只有一个值,如,按ID(主键)查询
此方法返回值是Object类型
java 面试题
1.描述在Spring中的依赖注入2.ibernate中的延时加载和即时加载的优缺点... 1.描述在Spring中的依赖注入2.ibernate中的延时加载和即时加载的优缺点 展开 我来答 3个回答 #热议# 你发朋友圈会使用部分人可见功能吗?⑨0後哋獊鎟 2009-08-14 知道答主 回答量:1 采纳率:0% 帮助的人:0 我也去...
hibernate怎么读
Hibernate Session传播;Hibernate EntityManager使用;Hibernate PC电脑休眠;ibernate voltage休眠电压;Hibernate Period过冬期;Hibernate Search激活;hibernate drugs冬眠药物;Oxios Hibernate内存整理软件;Hibernate Now休眠状态。二、双语例句:In the cold weather some of them hibernate.在寒冷的天气里,它...
hibernate二级缓存什么时候用
第二级是由sessionFactory控制的进程级缓存。是全局共享的缓存,凡是会调用二级缓存的查询方法 都会从中受益。只有经正确的配置后二级缓存才会发挥作用。同时在进行条件查询时必须使用相应的方法才能从缓存中获取数据。比如 Query.iterate()方法、load、get方法等。必须注意的是session.find方法永远是从数据库中获取数据,不...
hibernate 如何实现延迟加载
ibernate中主要是通过代理(proxy)机制来实现延迟加载。它的具体过程:Hibernate丛数据库获取某一个对象数据时、获取某一 个对象的集合属性值时,或获取某一个对象所关联的另一个对象时,由于没有使用该对象的数据,hibernate并不是数据库加载真正的数据,而只是为该对 象创建一个代理对象来代表这个对象,这个对象上的所有...
haibernate的主键生成策略有几种
1.3 hibernate控制:increment hilo uuid\/uuid.hex 1.4 其它:native 1.5 自定义主键生成器 主键生成策略 1. assigned 数据类型不限、保存前必须赋值 2. identity(重点掌握) 必须是有标识列 一般用来连接SQL和MySQL 数字,无需赋值 3. sequence(重点掌握) 这是序列 一般连接Oracle 数字,无...
JAVA Hibernate工作原理及为什么要用
库中没有就返回null。这个相对比较简单,也没有太大的争议。主要要说明的一点就是在这个版本(bibernate3.2以上)中get方法也会查找二 级缓存!2. Hibernate load方法加载实体对象的时候,根据映射文件上类级别的lazy属性的配置(默认为true),分情况讨论:(1)若为true,则首先在Session缓存中查找,看看...
Hibernate3 使用原生sql 返回集能用hbm.xml配置文件映射到类里吗?
三,heibernate的主键映射方式:在<id ...>节点下用<generator class="映射方式"\/>节点指定Hibernate向数据库插入数据时主键的生成方式 l assigned:应用程序自身对id赋值。当设置<generator class="assigned"\/>时,应用程序自身需要负责主键id的赋值,由外部程序负责生成(在session.save()之前为对象的...
nested exception is org.hibernate.TransactionException: JDBC ro...
该句说bibernate中的rollback failed.回滚失败.不能执行事物回滚.Caused by: java.sql.SQLException: Couldn't perform the operation rollback: You can't perform any operations on this connection. It has been automatically closed by Proxool for some reason (see logs).这里描述你不能进行...
动物冬眠的原原因?动物冬眠的原因?
我们来看看典型的冬眠动物土拨鼠。与松鼠不同,它并不储存越冬食物。土拨鼠以植 物为食,冬天临近,食物来源就断绝了。但是土拨鼠在自己的体内储存了脂肪。当它无法 继续觅食时,就钻入深洞睡觉。它睡整个冬天,靠储存的脂肪生存。 h ibernate这个词 源自拉丁文,意为"冬天的睡眠"。许多动物,例如熊,并不是...
hibernate 双向关联是不是造成循环依赖
这样是不好!但是有些时候这种依赖是必须的!假设有两个表一个是学生,另一个是学生成绩!学生成绩表有一个学生ID的外键,当你要插入学生成绩的时候,这个学生必须是在学生表里存在的。类的实例都被对方的属性引用其实就是完成他们之间的外键约束,然后保证在插入和修改的时候有级联操作!
盖怜通泰: 1.首先,通过SessionFactory创建Session实例,很多框架可以直接通过上下文getSession()获取到,在Hibernate中Session类的作用就相当于jdbc的Connection.2.其次,在Session类中可以直接调用createQuery(hql)/createSQLQuery(hql)来获...
双桥区17885903706: Hibernate中取对象的两个方法load()和get()有什么区别 - ?
盖怜通泰: 其实都是查询,只不过load()有延时加载 get方法不使用延迟加载机制,load采用延迟加载机制 如果没有满足条件的记录,get方法返回null,load则抛出异常 load方法返回的对象是一个动态代理类(Hibernate框架动态生成的,是实体类的子类型).get方法返回的对象类型就是原实体类型 延迟实现原理: ---在使用具有延迟加载机制API时,返回的是一个动态代理类型 首先动态在内存中创建的一个类 然后动态编译这个类,载入类加载器 ---返回的动态代理类是原实体类型的一个子类. ---动态代理类重写了实体类的getter,检测是否加载数据库的数据,未加载进行数据库查询,然后返回该属性值.
双桥区17885903706: hibernate里如何取出list值 - ?
盖怜通泰: 比如你返回的变量为 list; 里面放的是一个UserBean对象,UserBean里有属性(你所说的字段)username ,userpassword,现在你的问题是把username放入session里,则:UserBean user=(UserBean)list.get(0); session.setAttribe("USERNAME",user.getUsername()); 就可以了.你以后要用的时候,直接使用:session.getAttribe("USERNAME");就可以得到值了
双桥区17885903706: hibernate 怎样保存并同时取出刚保存的数据Id - ?
盖怜通泰: return (Long) getHibernateTemplate().save(); 上面那个是Spring集成的hibernate... 如果是纯hibernate的话就是session.save(pojo)....返回的是一个Serializable的对象,可强转成Long或者Integer等封装类,需手动转换成基本类型如int,long等 补充:恩,是保存,但保存的同时返回值也就是它在数据库的ID,如果不信可以一试
双桥区17885903706: hibernate一对多中要取出多端,不查出对象,应该怎么做 - ?
盖怜通泰: 你如果用的hibernate一对多,而且是从一的一端取多端的值的时候.你可以设置成懒加载模式.当你取得一的对象的时候,直接用get方法就可以获取多的一端的set集合.集合都拿到了,你要的name肯定也在对象里面了.
双桥区17885903706: hibernate 怎么写hsql语句取出数据库中最新插入那条的记录,或者说id最大的那条.?
盖怜通泰: 可以这么写HQL = "select u from User u order by id desc";这样取出的就是id最大的.
双桥区17885903706: 求助Hibernate一对多如何将多的一方数据取出来,转换成json数据 - ?
盖怜通泰: $.post('url',{'a':'a','b':'b'},function(obj){},'json')第一个参数为请求的地址,第二个为参数,第三个为callback方法,第四个为返回值obj的类型[这里为json数据类型].在jquery中没法使用后台传过来的方法,即使有类似的反射机制用起来也不方便,...
双桥区17885903706: hibernate ProjectionList查询出的List怎么取出来 - ?
盖怜通泰: Iterator itor = list.iterator(); while(itor.hasNext()) {..... }迭代,可以取出来,如果不取出来,在页面上也可以迭代.
双桥区17885903706: hibernate一对多,如何通过少的一方,取出多一方的属性,定义了一个set集合?
盖怜通泰: 先用load 把少的一方的一个实体取出来 ,在用 实体的getter 方法取出 set集合,再用遍历集合分别取出多的一方的每个实体 ,调用多的一方的 getter 方法取出属性
双桥区17885903706: Hibernate中怎么得到表名及字段名 - ?
盖怜通泰: 用SQL语句显示数据库中所有表的名称: select 表名=name,类型=case xtype when 'S' then '系统表' else '用户表' end from sysobjects where xtype in('U','S')