hibernate使用原生态sql查询
@Test public void test01(){ Session session =null; try { session=HibernateUtil.openSession(); List<Student> stu=session.createSQLQuery("select * from t_student where name like ?") .addEntity(Student.class)//设置返回结果集中存放的内容 .setParameter(0,"%张%")//hibernate设置参数是从0开始的,jdbc是从1 .setFirstResult(0) //分页 .setMaxResults(5) .list(); for(Student s:stu){ System.out.println(s.getName()); } } catch (Exception e) { e.printStackTrace(); }finally{ if(session!=null) session.close(); } } @Test public void test02(){ Session session =null; try { session=HibernateUtil.openSession(); //查询出三个关联的对象 注意:stu.*,cla.*,spe.* 直接这么写会以第一个为标准,当取相同属性时,就会取第一个对象的值 {stu.*},{cla.*},{spe.*}这样就会区分 List<Object[]> stus=session.createSQLQuery("select {stu.*},{cla.*},{spe.*} from" + " t_student stu left join t_classroom cla on(stu.cid=cla.id) left join t_special spe on(spe.id=cla.sid) where stu.name like ?") .addEntity("stu", Student.class) .addEntity("cla", ClassRoom.class) .addEntity("spe", Special.class) .setFirstResult(0).setMaxResults(10) .setParameter(0, "%张%") .list(); List<StuDto> stuDtos=new ArrayList<StuDto>(); for(Object[] s:stus){ Student stu=(Student) s[0]; ClassRoom cla=(ClassRoom) s[1]; Special spe=(Special) s[2]; stuDtos.add(new StuDto(stu,cla,spe)); System.out.println(stu.getName()+","+cla.getName()+spe.getName()); } } catch (Exception e) { e.printStackTrace(); }finally{ if(session!=null) session.close(); } } @Test public void test03(){ Session session =null; try { session=HibernateUtil.openSession(); //查询出三个关联的具体内容 List<StudentDto> sdto=session.createSQLQuery("select stu.id as sid,stu.name as sname, stu.sex as sex,cla.name as cname,spe.name as spename from" + " t_student stu left join t_classroom cla on(stu.cid=cla.id) left join t_special spe on(spe.id=cla.sid) where stu.name like ?") .setResultTransformer(Transformers.aliasToBean(StudentDto.class))//使用转换器 .setFirstResult(0).setMaxResults(10) .setParameter(0, "%张%") .list(); for(StudentDto sd:sdto){ System.out.println(sdto); } } catch (Exception e) { e.printStackTrace(); }finally{ if(session!=null) session.close(); } }
上面代码使用带的两个dto
StudentDto.java
/** * DTO对象没有存储的意义,仅仅是用来进行数据的传输的 * @author Administrator * */ public class StudentDto { private int sid; private String sname; private String sex; private String cname; private String spename; 省略get,set }
StuDto.java
public class StuDto { private Student stu; private ClassRoom cla; private Special spe; 省略get,set }
相关推荐
hibernate实现动态SQL查询,通过XML配置SQL,FREEMARKER 解析,生成要执行的SQL
Hibernate 函数 ,子查询 和原生SQL查询。Hibernate 函数 ,子查询 和原生SQL查询
hibernate执行原生sql语句
该方式是原生SQL查询的一种方式,需要个人自己书写SQL语句进行操作,用法比较灵活多变,适合比较复杂的SQL查询.该压缩包是本人对该查询方式的一种总结练习
Hibernate+本地SQL查询SQLQuery宣贯.pdf
Hibernate中的查询:HQL、Criteria、原生SQl的Demo,希望可以帮助大家理解Hibernate查询。
使用本地sql语句查询后,无需再使用Object对查询结果进行强制转换,而是直接将查询结果放到实体Bean里了。 PS: 其实只有一版,这里只所以叫最终版是因为该附件我上传了好几天传不上去,到最后报告说‘资源已经存在...
NULL 博文链接:https://ynp.iteye.com/blog/2007053
Hibernate+本地SQL查询SQLQuery.pdf
集成spring,hibernate,并且自写了一个sql的解析器,只有controller和service层,非常方便
hibernate将本地SQL查询结果封装成对象。如进行复杂的统计等本地sql语句查询后,直接放到对象里了,而不会再使用Object进行强转
Hibernate对原生SQL查询的支持和控制是通过SQLQuery接口实现的。通过Session接口,我们能够很方便的创建一个SQLQuery(SQLQuery是一个接口,在Hibernate4.2.2之前,默认返回的是SQLQuery的实现类——SQLQueryImpl对象...
模仿Hibernate生产SQL语句,使用Java反射
利用MYSQL数据库提供的样例数据库world建立的查询小例子。已经建立好了数据库对应的...本项目主要是为了练习使用Hibernate查询数据库。如果有什么问题可以发站内信或者邮件asddf14@hotmail.com。我会尽量解答一下~~~
本文旨在为读者呈现不同的方式查询方式:HQL方式的查询、SQL原生态SQL方式的查询、以及Criteria方式的查询,拓展查询的不同实现思路,开阔视野、并涵盖了部分的Hibernate增删改的基本操作。
Hibernate SQLQuery 查询Oracle char类型结果为一个字符解决方法 Hibernate SQLQuery 查询Oracle char类型结果为一个字符解决方法 Hibernate SQLQuery 查询Oracle char类型结果为一个字符解决方法 Hibernate SQL...
使用Hibernate编写通用数据库操作代码
hibernate将本地SQL查询结果封装成对象(最终).zip
Hibernate 实现原理 模拟,通过模拟hibernate的实现原理来加深对hibernate实现原理的理解和使用。
hibernate可以实现简单的数据库操作,可以实现简单的数据增加,数据查询,数据修改,数据删除。