java10 hibernate_Hibernate学习10——Hibernate 查询方式

packagecom.cy.service;importjava.util.List;importorg.hibernate.Query;importorg.hibernate.Session;importorg.hibernate.SessionFactory;importorg.junit.After;importorg.junit.Before;importorg.junit.Test;importcom.cy.model.Student;importcom.cy.util.HibernateUtil;public classStudentTest {private SessionFactory sessionFactory=HibernateUtil.getSessionFactory();privateSession session;

@Beforepublic void setUp() throwsException {

session=sessionFactory.openSession();

session.beginTransaction();

}

@Afterpublic void tearDown() throwsException {

session.getTransaction().commit();

session.close();

}/*** 本地sql查询,不带参数*/@Testpublic voidtestSQLQuery(){

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岁*/@Testpublic voidtestSQLQuery2(){

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查询*/@Testpublic voidtestHQLQuery(){

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 带条件查询*/@Testpublic voidtestHQLQuery2(){

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*/@Testpublic voidtestHQLQuery3(){

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查询 对结果排序

* 按照年龄降序排列*/@Testpublic voidtestHQLQuery4(){

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查询 分页查询*/@Testpublic voidtestHQLQuery5(){

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*/@Testpublic voidtestHQLQuery6() {

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")

@Testpublic voidtestHQLQuery7() {

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]*/}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值