Hibernate(3)-使用HQL语句进行数据查询
来源:互联网 发布:java多线程网络爬虫 编辑:程序博客网 时间:2024/04/28 05:51
使用HQL语句进行数据查询
-熟练掌握HQL语句的查询
-掌握Criteria查询
为什么使用HQL语句?
因为session.get()或load方法只可以获取单个对象,不能获取结果集。
HQL Hibernate Query language 是官方推荐的标准查询语句,语句结构与标准的SQL相似,但使用面向对象的方式进行数据操作。
HQL语句是SQL与JavaBean的结合体,在HQL中使用数据表的映射类来进行编写。
使用HQL语句的步骤:(查询不可以创建事务)
(1)创建session对象
(2)编写HQL语句
(3)创建Query对象
(4)执行查询
Configuration config = new Configuration().configure();
SessionFactory factory = config.buildSessionFactory();
Session session = factory.openSession();
(1)整表查询(from 类名的整表查询可以直接通过泛型获取该表映射的集合类)
Query query = session.createQuery("from User");
List<User> list = query.list();
for(User u : list){
System.out.println(u.getUserName());
}
(2)查询指定属性 返回Object[]
Query query = session.createQuery("select userId,userName,password,sex from User");
//进行查询
List<Object[]> list = query.list();
for(Object[] array : list){
System.out.println(array[0]+"\t"+array[1]+"\t"+array[2]+"\t"+array[3]);
}
(3)根据条件查询
Query query = session.createQuery("from User where userName='admin'");
User user = (User) query.list().get(0);
System.out.println(user.getPassword());
(4)使用占位符(HQL提供类似于PreparedStatement的参数注入方式进行数据查询)
Query query = session.createQuery("from User where userName=?");
//注入参数,索引从0开始
query.setString(0, "tom");
User user = (User) query.list().get(0);
System.out.println(user.getPassword());
(5)复杂的SQL语句执行
Query query = session.createQuery("from Employee where dep.depId=(select depId from Department where depName=?) ");
query.setString(0, "IT");
List<Employee> list = (List<Employee>) query.list();
for(Employee emp : list){
System.out.println(emp.getFirstName()+"\t"+emp.getDep().getDepName());
}
(6)分页查询
//设置当前页数
int page = 2;
//设置每页的记录条数
int count = 5;
//设置每页的起始索引 第一页从0开始
int index = count*(page-1);
Query query = session.createQuery("from Employee");
query.setFirstResult(index);
query.setMaxResults(count);
List<Employee> list = (List<Employee>) query.list();
for(Employee emp : list){
System.out.println(emp.getEmpId()+"\t"+emp.getFirstName());
}
(7)查询单行单列数据
Query query = session.createQuery("select count(*) from Employee");
Long count = (Long) query.uniqueResult();
System.out.println(count);
(8)表连接查询(当为表起别名后,在访问属性时必须要前缀别名)
Query query = session.createQuery("select emp.firstName,dep.depName from Employee as emp,Department as dep where emp.dep.depId=dep.depId");
List<Object[]> list = query.list();
for(Object[] array : list){
System.out.println(array[0]+"\t"+array[1]);
}
criteria
Criteria是Hibernate标准的对象查询方式,操作的方式更类似于JAVA对象的操作。
(1)创建Criteria(2)添加查询的规则(3)执行查询
Criteria criteria = session.createCriteria(Employee.class);
criteria.add(Restrictions.eq("firstName", "Steven"));
List<Employee> list = criteria.list();
for(Employee emp : list){
System.out.println(emp.getEmpId()+"\t"+emp.getFirstName());
}
0 0
- Hibernate(3)-使用HQL语句进行数据查询
- hql查询语句(hibernate)
- hibernate 使用HQL语句进行多表联查
- Hibernate 使用HQL方法进行模糊查询(3张表联合查询)
- Hibernate 中使用HQL进行查询
- Hibernate中使用HQL进行查询操作
- Hibernate中使用HQL进行查询操作
- Hibernate中使用HQL进行分页查询
- hibernate查询语句--HQL
- hibernate查询语句--HQL
- hibernate查询语句--HQL
- Hibernate查询语句+HQL
- hibernate查询语句---HQL
- hibernate查询语句--HQL
- hibernate查询语句--HQL
- hibernate查询HQL语句
- hibernate--HQL查询语句
- Hibernate查询语句HQL
- Strut2环境搭建+入门实例(1)
- android异常:java.lang.IllegalStateException: The specified child already has a parent. You must call r
- Hibernate(2)-ORM数据映射
- Java基础与提高干货系列——Java反射机制
- Android中的裁剪中Region.Op参数的用法
- Hibernate(3)-使用HQL语句进行数据查询
- JDBC - MetaData
- 坚持一年背英语单词的总结
- http post方式上传文件
- udacity上Google的深度学习笔记
- Java线程(7)
- Apache服务器的下载与安装
- MyBatis 灵活的ORM框架
- C++泛型编程 快速排序的函数模板实现