hibernate原生sql查询和hql查询的注意点
来源:互联网 发布:history.js下载 编辑:程序博客网 时间:2024/05/16 01:15
package com.xiangshuai.test;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;
import org.junit.Test;
import com.xiangshuai.hibernate.User;
public classDemo2 {
private Configuration conf=null;
SessionFactorysessionFactory=null;
Sessionsession=null;
/**
* 所有原生sql语句查询即createSQLQuery,必须加addEntity,这是因为原生sql查出的是一个List<Object[里面是属性]>而不是Hql查询出来的List<Object>
* 所以这里要先将出来的Object[属性]转成记录对应的对象User.
* 另外原生sql-- from表(数据库表);
* */
@Test
public void yssql(){
//带占位符查询
session=getSession();
SQLQueryque1= session.createSQLQuery("select * from t_user where id=?").addEntity(User.class);
Queryquery= que1.setInteger(0,17);//第一参数表示占位符位置,从0开始,第二个是value值
Useruser= (User) query.uniqueResult();//表示查询唯一值
System.out.println(user);
}
@Test
public void ysfysql(){
//hibernate原生sql分页查询 ---无论是mysql,还是oracle都可以直接这样操作不用改代码
session=getSession();
SQLQueryque1= session.createSQLQuery("select * from t_user").addEntity(User.class);
Queryquery= que1.setFirstResult(0).setMaxResults(3);//从数据库记录索引为0即每一条开始开始,查3条
List<User>list= query.list();
for (Useruser : list) {
System.out.println(user);
}
}
/**
* hql查询--- from类且不用再加addEntity,因为执行完Hql得到就是List<Object>
* */
@Test
public void hql(){
//带占位符查询
session=getSession();
Queryque1= session.createQuery("from User where id=?");
Queryquery= que1.setInteger(0,17);//第一参数表示占位符位置,从0开始,第二个是value值
Useruser= (User) query.uniqueResult();//表示查询唯一值
System.out.println(user);
}
@Test
public void fyhql(){
//hibernate hql分页查询 ---无论是mysql,还是oracle都可以直接这样操作不用改代码
session=getSession();
Queryque1= session.createQuery("from User");
Queryquery= que1.setFirstResult(0).setMaxResults(3);//从数据库记录索引为0即每一条开始开始,查3条
List<User>list= query.list();
for (Useruser : list) {
System.out.println(user);
}
}
public Session getSession() {
//1 读取配置文件
conf = newConfiguration().configure();
//2 根据配置创建Factory
sessionFactory = conf.buildSessionFactory();
//3 通过获得操作数据库的session对象
session = sessionFactory.openSession();
returnsession;
}
public voidcloseStream(SessionFactory sessionFactory,Sessionsession){
if(session!=null){
session.close();
}
if(sessionFactory!=null){
sessionFactory.close();
}
}
}
- hibernate原生sql查询和hql查询的注意点
- Hibernate的HQL查询及原生sql查询语句写法
- HQL条件查询和原生SQL查询
- Hibernate中的查询:HQL、Criteria、原生SQl
- 89-----hibernate的hql查询,原生SQL查询,命名查询,投影查询
- 浅谈Hibernate中HQL查询需要注意的几点
- Hibernate(一)HQL查询、原生sql查询
- Hibernate(一)HQL查询、原生sql查询
- HQL和原生SQL查询的数据类型问题
- Hibernate 中 HQL查询 和SQL查询的区别
- hibernate HQL查询以及原生SQL查询参数类型的区别
- Hibernate的原生SQL查询
- Hibernate的原生SQL查询
- hibernate的原生 sql查询
- HQL中的原生SQL查询
- hibernate分组与聚合查询(原生sql和使用case when then else end的hql)
- 原生sql查询转化为hql的实体查询
- Hibernate原生SQL查询
- NOIp2017游记
- C语言---多进程
- hiho 第177周
- Super Jumping! Jumping! Jumping! --简单dp
- HQL详解三
- hibernate原生sql查询和hql查询的注意点
- 局部图像处理
- 量子计算机编程原理简介 和 机器学习
- Posix有名信号量、基于内存的信号量
- Qt_QString类
- session的存储机制
- HDOJ 2093 考试排名
- 虚拟机与宿主机传输文件的方法
- Opencv-Python:图像尺寸、图像的读取、显示、保存与复制