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 ...
随机推荐
- Java堆外内存之五:堆外内存管理类ByteBuffer
本篇主要讲解如何使用直接内存(堆外内存),并按照下面的步骤进行说明: 相关背景-->读写操作-->关键属性-->读写实践-->扩展-->参考说明 希望对想使用直接内存的朋 ...
- R语言学习——欧拉计划(1)Multiples of 3 and 5
[题目一]If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. ...
- 转载-WebLogic使用总结
WebLogic使用总结(七)——WebLogic部署Web应用并绑定域名 孤傲苍狼 2015-01-13 15:19 阅读:2472 评论:1 WebLogic使用总结(六)——WebLog ...
- IE6 CSS高度height:100% 无效解决方法总结
原文地址:http://www.cnblogs.com/huangyong8585/archive/2013/02/05/2893058.html 上面红色部分为 height:100%; 自动拉 ...
- 深入理解HTTP协议之POST方法——ajax实例
作者:吴俊杰 性别:男 邮箱:sshroot@126.com 文章类型:原创 博客:http://www.cnblogs.com/voiphudong/ 一.说明http协议其实是一个相对比较简单的应 ...
- C# 获取物理网卡Mac地址
// <summary> /// 获取网卡物理地址 /// </summary> /// <returns></returns> public stat ...
- BOM及DOM及事件
知识内容: 1.BOM介绍 2.DOM操作 3.事件 参考:http://www.cnblogs.com/liwenzhou/p/8011504.html 入门代码(DOM基本操作与事件): < ...
- jpa-jpql-basic-test
jpql 基本测试 //可以使用 JPQL 完成 UPDATE 和 DELETE 操作. @Test public void testExecuteUpdate(){ String jpql = &q ...
- redis详解(四)-- 高可用分布式集群
一,高可用 高可用(High Availability),是当一台服务器停止服务后,对于业务及用户毫无影响. 停止服务的原因可能由于网卡.路由器.机房.CPU负载过高.内存溢出.自然灾害等不可预期的原 ...
- xe7 Unresolved external CSPIN.OBJ
工程里打开使用了CSPIN控件的界面窗体,再编译就好了 [ilink32 Error] Error: Unresolved external 'Vcl::Controls::TControl::Set ...