import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.hibernate.Hibernate;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.transform.Transformers;
import com.hibernate.bean.SqlQueryBean;
import com.hibernate.bean.User;
import com.hibernate.util.HibernateUtil;
public class SqlQueryTest {
public static void main(String[] args) {
sqlQueryAddScalar();
}
static void sqlQueryAddEntity() { //获取Hibernate Session对象
Session session = HibernateUtil.getSession(); //开始事务
Transaction tx = session.beginTransaction(); //编写SQL语句
String sqlString = "select * from user"; //以SQL语句创建SQLQuery对象
List l = session.createSQLQuery(sqlString) //将查询ss实体关联的User类
.addEntity("ss", User.class) //返回全部的记录集
.list(); //遍历结果集
Iterator it = l.iterator();
while (it.hasNext()) { //因为将查询结果与Student类关联,因此返回的是Student集合
User s = (User) it.next();
String a = s.getName();
System.out.println(a);
} //提交事务
tx.commit();
session.close();
}
static void sqlQueryAddScalar() { //返回Object[]的遍历
Session session = HibernateUtil.getSession();
Transaction transaction = session.beginTransaction();
String sql = "select * from user";
SQLQuery s = (SQLQuery) session.createSQLQuery(sql); //.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP)
s.addScalar("id", Hibernate.INTEGER); //列名, 数据类型
s.addScalar("name", Hibernate.STRING);
List list = s.list();
Object[] objects = (Object[]) list.get(0);
System.out.println(objects[0]);
System.out.println(objects[1]); //用MAP
SQLQuery ss = (SQLQuery) session.createSQLQuery(sql).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
ss.addScalar("id", Hibernate.INTEGER);
ss.addScalar("name", Hibernate.STRING);
List list2 = ss.list();
Map map = (Map) list2.get(0);
System.out.println(map.get("name"));
System.out.println(map.get("id")); //用LIST
SQLQuery s3 = (SQLQuery) session.createSQLQuery(sql).setResultTransformer(Transformers.TO_LIST);
s3.addScalar("id", Hibernate.INTEGER);
s3.addScalar("name", Hibernate.STRING);
List list3 = s3.list();
List list4 = (List) list3.get(0);
System.out.println(list4.get(0));
System.out.println(list4.get(1)); //用自定义的bean
SQLQuery e = (SQLQuery) session.createSQLQuery(sql).setResultTransformer(Transformers.aliasToBean(SqlQueryBean.class));
e.addScalar("id", Hibernate.INTEGER);
e.addScalar("name", Hibernate.STRING);
List r = e.list();
SqlQueryBean sqb = (SqlQueryBean) r.get(0);
System.out.println(sqb.getId());
System.out.println(sqb.getName());
}
}
引自:http://www.cnblogs.com/redant/archive/2010/01/28/1658479.html
分享到:
相关推荐
hibernate实现动态SQL查询,通过XML配置SQL,FREEMARKER 解析,生成要执行的SQL
Hibernate SQLQuery 查询Oracle char类型结果为一个字符解决方法 Hibernate SQLQuery 查询Oracle char类型结果为一个字符解决方法 Hibernate SQLQuery 查询Oracle char类型结果为一个字符解决方法 Hibernate SQL...
使用hibernate对sqlserver 2005进行增删改查
Hibernate+本地SQL查询SQLQuery宣贯.pdf
使用本地sql语句查询后,无需再使用Object对查询结果进行强制转换,而是直接将查询结果放到实体Bean里了。 PS: 其实只有一版,这里只所以叫最终版是因为该附件我上传了好几天传不上去,到最后报告说‘资源已经存在...
模仿Hibernate生产SQL语句,使用Java反射
Hibernate 函数 ,子查询 和原生SQL查询。Hibernate 函数 ,子查询 和原生SQL查询
hibernate中使用sql 而不是hql语句
让hibernate输出sql语句参数配置.doc
hibernate将本地SQL查询结果封装成对象。如进行复杂的统计等本地sql语句查询后,直接放到对象里了,而不会再使用Object进行强转
不错的分页(Hibernate+sqlserver2000分页)值得大家一看。
使用Hibernate访问数据库,demo中数据库使用的是sqlserver
基于JavaWeb实现的图书管理系统(struts+spring+hibernate+SQL Server) 基于JavaWeb实现的图书管理系统(struts+spring+hibernate+SQL Server) 基于JavaWeb实现的图书管理系统(struts+spring+hibernate+SQL Server) ...
基于spring实现的网上订餐系统(struts+spring+hibernate+SQL Server) 基于spring实现的网上订餐系统(struts+spring+hibernate+SQL Server) 基于spring实现的网上订餐系统(struts+spring+hibernate+SQL Server) 基于...
hibernate执行原生sql语句
NULL 博文链接:https://elfasd.iteye.com/blog/1770847
hibernate 多表查询 hibernate 多表不同于一般的sql嵌套查询,嵌套查询是不支持的,所以必须要配置好才能实现多表!只要配置好了,还是特别好用的
Hibernate中的查询:HQL、Criteria、原生SQl的Demo,希望可以帮助大家理解Hibernate查询。
如果你使用原sql2000驱动及配置,新增、编辑记录都没有问题,查询第一页数据也正常,但翻页却莫名报错:传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确。 通过实战总结,希望能给各位带来帮助。 包含jdbc ...
使用Hibernate编写通用数据库操作代码