Hibernate之QBC检索和本地SQL检索
2014-12-02 22:19
218 查看
QBC查询就是通过使用Hibernate提供的Query By Criteria API来查询对象,这种API封装了SQL语句的动态拼装,对查询提供了更加面向对象的功能接口
本地SQL查询来完善HQL不能涵盖所有的查询特性。
====================代码区======================
测试类
本地SQL查询来完善HQL不能涵盖所有的查询特性。
====================代码区======================
测试类
package com.yl.hibernate.test; import java.util.ArrayList; import java.util.Arrays; import java.util.LinkedHashSet; import java.util.List; import java.util.Set; import oracle.net.aso.e; import org.hibernate.Criteria; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import org.hibernate.criterion.Conjunction; import org.hibernate.criterion.Disjunction; import org.hibernate.criterion.MatchMode; import org.hibernate.criterion.Order; import org.hibernate.criterion.Projection; import org.hibernate.criterion.Projections; import org.hibernate.criterion.Restrictions; import org.hibernate.service.ServiceRegistry; import org.hibernate.service.ServiceRegistryBuilder; import org.junit.After; import org.junit.Before; import org.junit.Test; import com.yl.hibernate.entities.Department; import com.yl.hibernate.entities.Employee; public class HibernateTest { private SessionFactory sessionFactory; private Session session; private Transaction transaction; @Before public void init() { Configuration configuration = new Configuration().configure(); ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()) .buildServiceRegistry(); sessionFactory = configuration.buildSessionFactory(serviceRegistry); session = sessionFactory.openSession(); transaction = session.beginTransaction(); } @After public void destory() { transaction.commit(); session.close(); sessionFactory.close(); } @Test public void testQBC() { //1.创建一个Ctiteria对象 Criteria criteria = session.createCriteria(Employee.class); //2.添加查询条件:在QBC中查询条件使用Criterion来表示 //Criterion可以通过Restrictions 的静态方法得到 criteria.add(Restrictions.eq("email", "PRESIDENT")); criteria.add(Restrictions.gt("salary", 500f)); //3.执行查询 Employee employee = (Employee) criteria.uniqueResult(); System.out.println(employee); } @Test public void testQBC2() { Criteria criteria = session.createCriteria(Employee.class); //1.AND: 使用Conjunction表示 //Conjunction 本身就是一个Criterion对象 //且其中还可以添加Criterion对象 Conjunction conjunction = Restrictions.conjunction(); conjunction.add(Restrictions.like("name", "A", MatchMode.ANYWHERE)); Department dept = new Department(); dept.setId(20); conjunction.add(Restrictions.eq("dept", dept)); System.out.println(conjunction); //2. OR Disjunction disjunction = Restrictions.disjunction(); disjunction.add(Restrictions.ge("salary", 1000F)); disjunction.add(Restrictions.isNotNull("email")); criteria.add(disjunction); criteria.add(conjunction); criteria.list(); /** * where ( this_.SALARY>=? or this_.EMAIL is not null ) and ( this_.NAME like ? and this_.DEPT_ID=? ) */ } @Test public void testQBC3() { Criteria criteria = session.createCriteria(Employee.class); //统计查询: 使用Projection表示: 可以由Projections的静态方法得到 criteria.setProjection(Projections.max("salary")); System.out.println(criteria.uniqueResult()); } @Test public void testQBC4() { Criteria criteria = session.createCriteria(Employee.class); //1.添加排序 criteria.addOrder(Order.asc("salary")); criteria.addOrder(Order.desc("email")); //2.添加分页 int pageSize = 3; int pageNo = 2; criteria.setFirstResult((pageNo - 1) * pageSize) .setMaxResults(pageSize) .list(); } @Test public void testNative() { String sql = "INSERT INTO YL_department VALUES(?, ?)"; Query query = session.createSQLQuery(sql); query.setInteger(0, 50) .setString(1, "DEV") .executeUpdate(); } @Test public void testHQLUpdate() { String hql = "DELETE FROM Department d WHERE d.id = :id"; session.createQuery(hql).setInteger("id", 50) .executeUpdate(); } }
相关文章推荐
- Hibernate(十五):QBC检索、本地SQL检索和HQL删除
- Hibernate 检索查询的几种方式(HQL,QBC,本地SQL,集成Spring等)
- Hibernate-HQL-QBC 检索-本地SQL 检索
- [原创]java WEB学习笔记92:Hibernate学习之路-- -QBC 检索和本地 SQL 检索:基本的QBC 查询,带 AND 和 OR 的QBC,统计查询,排序,分页
- Hibernate---QBC检索与本地SQL检索
- Hibernate深入理解----Hibernate 检索方式(HQL,QBC,本地SQL)
- Hibernate 检索查询的几种方式(HQL,QBC,本地SQL,集成Spring等)
- Hibernate 检索查询的几种方式(HQL,QBC,本地SQL,集成Spring等)
- Hibernate学习笔记----QBC和本地SQL查询
- 10.3 hibernate_查询方式(QBC查询、本地SQL查询)
- Hibernate之QBC查询与本地SQL查询
- hibernate教程--检索方式详解(hql,sql,QBC)
- hibernate查询方式【2】:QBC查询,本地sql查询
- Hibernate学习之QBC和本地SQL查询
- QBC检索和本地SQL检索
- QBC检索和本地SQL检索
- Hibernate之QBC查询与本地SQL查询
- Hibernate学习之路(十三):Hibernate中的QBC查询和本地sql操作
- 14、Hibernate的HQL与QBC检索
- HQL和QBC和QBE + hibernate检索方式