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对数据库查询的坑的更多相关文章

  1. 2018.11.13 Hibernate 中数据库查询中的Criteria查询实例

    Criteria是面向对象的无语句查询 Demo.java package com.legend.b_criteria; import java.util.List; import org.hiber ...

  2. Hibernate自定义数据库查询(排序、输出条数)

    Hibernate数据库操作类(eg:TexDAO.java) /* * queryString HQL语句,first开始条数, max输出条数 ,norder排序 * 例: List lis = ...

  3. hibernate框架之-查询结果集返回类型

    Hibernate支持HQL和SQL的查询,返回结果支持POJO类型或字段/数组的形式. 开发中用Hibernate进行数据库查询,用的是SQL.原来需要查询一个表的几乎所有字段,所以我使用了addE ...

  4. [转载]Hibernate如何提升数据库查询的性能

    目录(?)[-] 数据库查询性能的提升也是涉及到开发中的各个阶段在开发中选用正确的查询方法无疑是最基础也最简单的 SQL语句的优化 使用正确的查询方法 使用正确的抓取策略 Hibernate的性能优化 ...

  5. 各数据库查询前N条记录的SQL语句

    sql在不同数据库查询前几条数据 1. ORACLE SELECT * FROM TABLE_NAME WHERE ROWNUM <= N;  HQL: from table_name t or ...

  6. Hibernate原生SQL查询

    最近在做一个较为复杂的查询,hibernate基本的查询不能满足,只好使用其提供的原生sql查询.参考网上的一些资料,做一些总结. 对原生SQL查询执行的控制是通过SQLQuery接口进行的,通过执行 ...

  7. [转]Hibernate不能自动建表解决办法及Hibernate不同数据库的连接及SQL方言

    最近开始学Hibernate,看的是李刚的那本<轻量级java ee企业应用实战>.头一个hibernate程序,我原原本本的按照书上例子写下来,同时只是改动了些mysql的连接参数,并且 ...

  8. Hibernate之HQL查询

    一.Hibernate 提供了以下几种检索对象的方式: 导航对象图检索方式: 根据已经加载的对象导航到其他对象 OID 检索方式: 按照对象的 OID 来检索对象 HQL 检索方式:使用面向对象的 H ...

  9. 使用hibernate更新数据库记录的信息的相关学习记录

    截选代码(可能遗漏标点符号): package name.sql; import java.util.List; import name.session.HibernateSessionFactory ...

随机推荐

  1. Mybatis学习(4)输入映射、输出映射、动态sql

    一.输入映射: 通过parameterType指定输入参数的类型,类型可以是简单类型.hashmap.pojo的包装类型 1) 传递pojo的包装对象 需求是:完成用户信息的综合查询,传入的查询条件复 ...

  2. HDU 2066 一个人的旅行 (Dijkstra算法)

    一个人的旅行 Time Limit : 1000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submis ...

  3. ssh的应用和vnc连接桌面

    什么是ssh? SSH是一种网络协议,用于计算机之间的加密登录.如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露.SSH之 ...

  4. [UE4]代理事件(C++)

    用宏定义类似格式: DECLARE_DELEGATE //普通代理 DECLARE_DYNAMIC_DELEGATE_TwoParams //动态代理 DECLARE_DYNAMIC_MULTICAS ...

  5. xshell配置通过堡垒机直接登陆到内网机器

    在xshell中文件-->新建菜单,打开新建会话属性,填写堡垒机的IP端口和账号密码后,进入登录脚本 : 勾选"执行以下的期望和发送组合对(X) " (1)添加: 期望: 发 ...

  6. 图片尺寸批量resize的matlab并行代码

    在caffe ImageNet例子中有对图片进行resize的部分,文中使用的是linux shell脚本命令: for name in /path/to/imagenet/val/*.JPEG; d ...

  7. 信息学奥赛(NOIP)复赛学习方法推荐

    一.确定你的语言 NOIP包括三种语言c/c++/pascal,在最初必须确定自己使用的语言.没有c/c++基础的,个人建议使用pascal,因为它更容易上手,如果有充裕的时间,则建议c/c++,因为 ...

  8. 洛谷 P1197 [JSOI2008]星球大战

    题目描述 很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治者整个星系.某一天,凭着一个偶然的机遇,一支反抗军摧毁了帝国的超级武器,并攻下了星系中几乎所有的星球.这些星球通过特殊的以太隧道 ...

  9. Nginx相关笔记

    相关参考: 编译安装测试nginx            https://www.cnblogs.com/jimisun/p/8057156.html

  10. 1. SVN clean失败解决方法

    svn执行clean up后出现提示:svn cleanup failed–previous operation has not finished; run cleanup if it was int ...