hibernate对数据库查询的坑
hibernate对数据库的查询其实有很多种方法,下面我来介绍我知道的两种方法,以及它们可能会遇到的问题,这里前两种都是查询所有结果
最后一种是 使用hibernate查询一条记录。
第一种方法
public void queryTest() {
Configuration configuration = new Configuration();//默认就是加载hibernate.cfg.xml
configuration.configure();
//获得会话工厂,创建会话
SessionFactory buildSessionFactory = configuration.buildSessionFactory();
//获得session
Session session = buildSessionFactory.openSession();
//开启事务
Transaction tx = session.beginTransaction();
//注意这个地方,直接from 就行,from后面跟的是自己建的bean类名,不是表名
Query createQuery = session.createQuery("from Student");
List<Student> students = createQuery.list();
for(Student student:students) {
System.out.println(student);
}
//关闭资源
session.close();
buildSessionFactory.close();
}
!!!!!!! 这种查询方式大家注意了,这里我的bean名字是Student,所以上面是from Student

第二种方法:
package com.cidp.test; import java.util.List; import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test; import com.cidp.pojo.Student; public class MyTest { //测试插入数据
@Test
public void queryTest() {
Configuration configuration = new Configuration();//默认就是加载hibernate.cfg.xml
configuration.configure();
//获得会话工厂,创建会话
SessionFactory buildSessionFactory = configuration.buildSessionFactory();
//获得session
Session session = buildSessionFactory.openSession(); //开启事务
Transaction tx = session.beginTransaction();
//这种主要就是自己写sql语句,这里就是sql怎么写就是怎样的了。
Query query = session.createSQLQuery("select * from stu_info").addEntity(Student.class);
List<Student> list = (List<Student>)query.list(); for(Student student:list) {
System.out.println(student);
} //关闭资源
session.close();
buildSessionFactory.close();
}
}
第三种:
package com.cidp.test; import java.util.List; import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test; import com.cidp.pojo.Student; public class MyTest { //测试插入数据
@Test
public void queryOneTest() {
Configuration configuration = new Configuration();//默认就是加载hibernate.cfg.xml
configuration.configure();
//获得会话工厂,创建会话
SessionFactory buildSessionFactory = configuration.buildSessionFactory();
//获得session
Session session = buildSessionFactory.openSession(); //开启事务
Transaction tx = session.beginTransaction(); Query query = session.createSQLQuery("select * from stu_info where id = 2"); //返回的是Object[], 存放的是一条数据中,的每一列元素,例如2 李四 123456
Object[] uniqueResult = (Object[]) query.uniqueResult();
for(Object object : uniqueResult) {
System.out.print(object + " ");
}
System.out.println();
//关闭资源
session.close();
buildSessionFactory.close();
}
}
hibernate对数据库查询的坑的更多相关文章
- 2018.11.13 Hibernate 中数据库查询中的Criteria查询实例
Criteria是面向对象的无语句查询 Demo.java package com.legend.b_criteria; import java.util.List; import org.hiber ...
- Hibernate自定义数据库查询(排序、输出条数)
Hibernate数据库操作类(eg:TexDAO.java) /* * queryString HQL语句,first开始条数, max输出条数 ,norder排序 * 例: List lis = ...
- hibernate框架之-查询结果集返回类型
Hibernate支持HQL和SQL的查询,返回结果支持POJO类型或字段/数组的形式. 开发中用Hibernate进行数据库查询,用的是SQL.原来需要查询一个表的几乎所有字段,所以我使用了addE ...
- [转载]Hibernate如何提升数据库查询的性能
目录(?)[-] 数据库查询性能的提升也是涉及到开发中的各个阶段在开发中选用正确的查询方法无疑是最基础也最简单的 SQL语句的优化 使用正确的查询方法 使用正确的抓取策略 Hibernate的性能优化 ...
- 各数据库查询前N条记录的SQL语句
sql在不同数据库查询前几条数据 1. ORACLE SELECT * FROM TABLE_NAME WHERE ROWNUM <= N; HQL: from table_name t or ...
- Hibernate原生SQL查询
最近在做一个较为复杂的查询,hibernate基本的查询不能满足,只好使用其提供的原生sql查询.参考网上的一些资料,做一些总结. 对原生SQL查询执行的控制是通过SQLQuery接口进行的,通过执行 ...
- [转]Hibernate不能自动建表解决办法及Hibernate不同数据库的连接及SQL方言
最近开始学Hibernate,看的是李刚的那本<轻量级java ee企业应用实战>.头一个hibernate程序,我原原本本的按照书上例子写下来,同时只是改动了些mysql的连接参数,并且 ...
- Hibernate之HQL查询
一.Hibernate 提供了以下几种检索对象的方式: 导航对象图检索方式: 根据已经加载的对象导航到其他对象 OID 检索方式: 按照对象的 OID 来检索对象 HQL 检索方式:使用面向对象的 H ...
- 使用hibernate更新数据库记录的信息的相关学习记录
截选代码(可能遗漏标点符号): package name.sql; import java.util.List; import name.session.HibernateSessionFactory ...
随机推荐
- 杂项:GitHub
ylbtech-杂项:GitHub gitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名gitHub. gitHub于2008年4月10日正式上线, ...
- [UE4] 虚幻4学习---UE4中的字符串转换
String Conversions: FString To FName FString To Int32 Float To FString FArrayReaderPtr To FString TA ...
- SpringMVC整合Hessian访问远程服务
1.1 Hessian简介 Hessian是一个轻量级的Web服务实现工具,它采用的是二进制协议,因此很适合发送二进制数据.它的一个基本原理就是把远程服务对象以二进制的方式进行发送 ...
- direct path read/write (直接路径读/写)
转载:http://www.dbtan.com/2010/04/direct-path-readwrite.html direct path read/write (直接路径读/写): 直接路径读(d ...
- CSS border-right-style属性设置元素的右边框样式
CSS border-right-style属性设置元素的右边框样式 边框的样式指的是边框的线条属性,指的是边框采用的是实线效果.短线效果还是其它的线条效果. border-right-style属性 ...
- Django中间件执行流程
中间件函数是 django 框架为我们预留的函数接口, 让我们可以干预请求和应答的过程 1. 获取浏览器端的IP地址: 使用 request.META[‘REMOTE_ADDR’] 2. 使用中间件 ...
- noip 2011 选择客栈
题目描述 丽江河边有n 家很有特色的客栈,客栈按照其位置顺序从 1 到n 编号.每家客栈都按照某一种色调进行装饰(总共 k 种,用整数 0 ~ k-1 表示),且每家客栈都设有一家咖啡店,每家咖啡店均 ...
- jenkins API
1.curl http://199.168.299.99:8080/job/send_message/lastBuild/api/json --user administrator:1234 获取j ...
- UVA350-水题
#include<iostream> using namespace std; int main() { int c = 0; int Z, L, I, M; while (cin > ...
- linux高效shell命令总结
免废话,直接上代码 .c |awk 'NR==21{gsub(/t09/,"ruiy");printf $0}' 1,comm[2文件间行比较] [root@localhost r ...