博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hibernate学习10——Hibernate 查询方式
阅读量:7303 次
发布时间:2019-06-30

本文共 12455 字,大约阅读时间需要 41 分钟。

本章主要是以查询Student的例子:

Student.java:

package com.cy.model;public class Student {    private int id;    private String name;    private int age;            public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }    @Override    public String toString() {        return "Student [id=" + id + ", name=" + name + ", age=" + age + "]";    }            }
View Code

Student.hbm.xml:

View Code

数据库中student数据:

 

第一节:Hibernate 查询方式简介                                    

导航对象图是说from Student s where s.name = xxx and s.age = xxx这样可以对象.属性这样子;
OID查询方式:比如Session.get(Student.class, 1);根据ID查询这样子;
 
 
第二节:本地SQL 查询方式                                  
/**     * 本地sql查询,不带参数     */    @Test    public void testSQLQuery(){        String sql = "select * from t_student";        Query query = session.createSQLQuery(sql).addEntity(Student.class);    //查询student,绑定Student实体        List
studentList = query.list(); for(Student s: studentList){ System.out.println(s); } /** * Hibernate: select * from t_student Student [id=1, name=张三, age=10] Student [id=2, name=李四, age=15] Student [id=3, name=王五, age=13] */ } /** * 本地sql查询,带参数 * 查询姓名张开头,且10岁 */ @Test public void testSQLQuery2(){ String sql = "select * from t_student where stuName like :stuName and stuAge = :stuAge"; Query query = session.createSQLQuery(sql).addEntity(Student.class); //查询student,绑定Student实体 query.setString("stuName", "张%"); query.setInteger("stuAge", 10); List
studentList = query.list(); for(Student s: studentList){ System.out.println(s); } /* * Hibernate: select * from t_student where stuName like ? and stuAge = ? Student [id=1, name=张三, age=10] */ }
View Code

 

第三节:HQL 查询方式                                        

package com.cy.service;import java.util.List;import org.hibernate.Query;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.junit.After;import org.junit.Before;import org.junit.Test;import com.cy.model.Student;import com.cy.util.HibernateUtil;public class StudentTest {    private SessionFactory sessionFactory=HibernateUtil.getSessionFactory();    private Session session;        @Before    public void setUp() throws Exception {        session=sessionFactory.openSession();         session.beginTransaction();    }    @After    public void tearDown() throws Exception {         session.getTransaction().commit();         session.close();    }        /**     * 本地sql查询,不带参数     */    @Test    public void testSQLQuery(){        String sql = "select * from t_student";        Query query = session.createSQLQuery(sql).addEntity(Student.class);    //查询student,绑定Student实体        List
studentList = query.list(); for(Student s: studentList){ System.out.println(s); } /** * Hibernate: select * from t_student Student [id=1, name=张三, age=10] Student [id=2, name=李四, age=15] Student [id=3, name=王五, age=13] */ } /** * 本地sql查询,带参数 * 查询姓名张开头,且10岁 */ @Test public void testSQLQuery2(){ String sql = "select * from t_student where stuName like :stuName and stuAge = :stuAge"; Query query = session.createSQLQuery(sql).addEntity(Student.class); //查询student,绑定Student实体 query.setString("stuName", "张%"); query.setInteger("stuAge", 10); List
studentList = query.list(); for(Student s: studentList){ System.out.println(s); } /* * Hibernate: select * from t_student where stuName like ? and stuAge = ? Student [id=1, name=张三, age=10] */ } /** * HQL查询 */ @Test public void testHQLQuery(){ String hql = "from Student"; Query query = session.createQuery(hql); List
studentList = query.list(); for(Student s : studentList){ System.out.println(s); } /* * Hibernate: select student0_.stuId as stuId1_0_, student0_.stuName as stuName2_0_, student0_.stuAge as stuAge3_0_ from t_student student0_ Student [id=1, name=张三, age=10] Student [id=2, name=李四, age=15] Student [id=3, name=王五, age=13] */ } /** * HQL 带条件查询 */ @Test public void testHQLQuery2(){ String hql = "from Student where name like :stuName and age = :stuAge "; Query query = session.createQuery(hql); query.setString("stuName", "张%"); query.setInteger("stuAge", 10); List
studentList = query.list(); for(Student s : studentList){ System.out.println(s); } /* * Hibernate: select student0_.stuId as stuId1_0_, student0_.stuName as stuName2_0_, student0_.stuAge as stuAge3_0_ from t_student student0_ where (student0_.stuName like ?) and student0_.stuAge=? Student [id=1, name=张三, age=10] */ } /** * HQL 使用别名 * from Student as s * 或者 * from Student s */ @Test public void testHQLQuery3(){ String hql="from Student as s where s.name like :stuName and s.age=:stuAge"; Query query=session.createQuery(hql); query.setString("stuName", "张%"); query.setInteger("stuAge", 10); List
studentList= query.list(); for(Student s : studentList){ System.out.println(s); } } /** * HQL查询 对结果排序 * 按照年龄降序排列 */ @Test public void testHQLQuery4(){ String hql = "from Student order by age desc"; Query query = session.createQuery(hql); List
studentList = query.list(); for(Student s : studentList){ System.out.println(s); } /* * Hibernate: select student0_.stuId as stuId1_0_, student0_.stuName as stuName2_0_, student0_.stuAge as stuAge3_0_ from t_student student0_ order by student0_.stuAge desc Student [id=2, name=李四, age=15] Student [id=3, name=王五, age=13] Student [id=1, name=张三, age=10] */ } /** * HQL查询 分页查询 */ @Test public void testHQLQuery5(){ String hql="from Student"; Query query=session.createQuery(hql); //第1条记录开始,取2条; query.setFirstResult(1); query.setMaxResults(2); List
studentList = query.list(); for(Student s : studentList){ System.out.println(s); } /* * Hibernate: select student0_.stuId as stuId1_0_, student0_.stuName as stuName2_0_, student0_.stuAge as stuAge3_0_ from t_student student0_ limit ?, ? Student [id=2, name=李四, age=15] Student [id=3, name=王五, age=13] */ } /** * HQL查询 查询单个对象 * 查询出一条记录,完全能确定是一条记录,这里就不是list了,uniqueResult * 比如查询总记录数,就可以用uniqueResult */ @Test public void testHQLQuery6() { String hql="from Student"; Query query=session.createQuery(hql); query.setFirstResult(1); query.setMaxResults(1); Student s = (Student) query.uniqueResult(); System.out.println(s); /* * Hibernate: select student0_.stuId as stuId1_0_, student0_.stuName as stuName2_0_, student0_.stuAge as stuAge3_0_ from t_student student0_ limit ?, ? Student [id=2, name=李四, age=15] */ } /** * HQL 链式写法 */ @SuppressWarnings("unchecked") @Test public void testHQLQuery7() { String hql = "from Student s where s.name like :stuName and s.age = :stuAge"; List
studentList = session.createQuery(hql) .setString("stuName", "李%") .setInteger("stuAge", 15) .list(); for(Student s : studentList){ System.out.println(s); } /* * Student [id=2, name=李四, age=15] */ } }
View Code

 

第四节:QBC 查询方式                                              

package com.cy.service;import java.util.List;import org.hibernate.Criteria;import org.hibernate.Query;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.criterion.Criterion;import org.hibernate.criterion.Order;import org.hibernate.criterion.Restrictions;import org.junit.After;import org.junit.Before;import org.junit.Test;import com.cy.model.Student;import com.cy.util.HibernateUtil;public class StudentTest {    private SessionFactory sessionFactory=HibernateUtil.getSessionFactory();    private Session session;        @Before    public void setUp() throws Exception {        session=sessionFactory.openSession();         session.beginTransaction();    }    @After    public void tearDown() throws Exception {         session.getTransaction().commit();         session.close();    }                /**     * QBC查询     */    @Test    public void testQBCQuery(){        Criteria criteria = session.createCriteria(Student.class);        List
stuList = criteria.list(); for(Student s : stuList){ System.out.println(s); } /* * Hibernate: select this_.stuId as stuId1_0_0_, this_.stuName as stuName2_0_0_, this_.stuAge as stuAge3_0_0_ from t_student this_ Student [id=1, name=张三, age=10] Student [id=2, name=李四, age=15] Student [id=3, name=王五, age=13] */ } /** * QBC 带条件查询 */ @Test public void testQBCQuery2(){ Criteria criteria = session.createCriteria(Student.class); Criterion c1 = Restrictions.like("name", "李%"); Criterion c2 = Restrictions.eq("age", 15); criteria.add(c1); criteria.add(c2); List
stuList = criteria.list(); for(Student s : stuList){ System.out.println(s); } /* * Hibernate: select this_.stuId as stuId1_0_0_, this_.stuName as stuName2_0_0_, this_.stuAge as stuAge3_0_0_ from t_student this_ where this_.stuName like ? and this_.stuAge=? Student [id=2, name=李四, age=15] */ } /** * QBC 对结果排序 */ @Test public void testQBCQuery3(){ Criteria criteria = session.createCriteria(Student.class); criteria.addOrder(Order.desc("age")); List
stuList = criteria.list(); for(Student s : stuList){ System.out.println(s); } /* * Student [id=2, name=李四, age=15] Student [id=3, name=王五, age=13] Student [id=1, name=张三, age=10] */ } /** * QBC 分页查询 */ @Test public void testQBCQuery4(){ Criteria criteria = session.createCriteria(Student.class); criteria.setFirstResult(0); //从第0条记录开始 criteria.setMaxResults(2); //查询2条 List
stuList = criteria.list(); for(Student s : stuList){ System.out.println(s); } /* * Hibernate: select this_.stuId as stuId1_0_0_, this_.stuName as stuName2_0_0_, this_.stuAge as stuAge3_0_0_ from t_student this_ limit ? Student [id=1, name=张三, age=10] Student [id=2, name=李四, age=15] */ } /** * QBC 查询单个对象 * 因为这里只取一条记录,uniqueResult */ @Test public void testQBCQuery5(){ Criteria criteria = session.createCriteria(Student.class); criteria.setFirstResult(2); criteria.setMaxResults(1); Student s = (Student) criteria.uniqueResult(); System.out.println(s); /* * Hibernate: select this_.stuId as stuId1_0_0_, this_.stuName as stuName2_0_0_, this_.stuAge as stuAge3_0_0_ from t_student this_ limit ?, ? Student [id=3, name=王五, age=13] */ } /** * QBC 链式写法 */ @SuppressWarnings("unchecked") @Test public void testQBCQuery6(){ Criterion c1 = Restrictions.like("name", "李%"); Criterion c2 = Restrictions.eq("age", 15); List
stuList = session.createCriteria(Student.class) .add(c1) .add(c2) .list(); for(Student s : stuList){ System.out.println(s); } } }
View Code

 

转载于:https://www.cnblogs.com/tenWood/p/7259131.html

你可能感兴趣的文章
Scrum立会报告+燃尽图(十二月九日总第四十次):视频剪辑与用户反馈
查看>>
xlst
查看>>
修改PHP上传文件的大小限制(post)
查看>>
Tengine 添加第三方监控模块nginx-module-vts
查看>>
黑马程序员-面向对象-09天-4
查看>>
小强的HTML5移动开发之路(14)——Video标签详解
查看>>
大白话5分钟带你走进人工智能-第十八节逻辑回归之交叉熵损失函数梯度求解过程(3)...
查看>>
在wamp下安装bugfree
查看>>
《大道至简》第二章(是懒人创造了方法)读后感
查看>>
【database】database domain knowledge
查看>>
UVa 455 - Periodic Strings
查看>>
使用JDBC连接数据库
查看>>
20172307 2017-2018-2 《程序设计与数据结构》第6周学习总结
查看>>
c#中使用多线程访问winform中控件的若干问题
查看>>
strong_alias && weak_alias && __attribute__
查看>>
js中三个对数组操作的函数 indexOf()方法 filter筛选 forEach遍历 map遍历
查看>>
Histogram Equalization(直方图均衡化)
查看>>
string::substr()简介
查看>>
[LeetCode] Permutations II
查看>>
献给我老公 - Java枚举类型
查看>>