国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Hibernate之QBC檢索和本地SQL檢索

2019-11-14 22:05:46
字體:
來源:轉載
供稿:網友
Hibernate之QBC檢索和本地SQL檢索

QBC查詢就是通過使用Hibernate提供的Query By Criteria API來查詢對象,這種API封裝了SQL語句的動態拼裝,對查詢提供了更加面向對象的功能接口

本地SQL查詢來完善HQL不能涵蓋所有的查詢特性。

====================代碼區======================

測試類

  1 package com.yl.hibernate.test;  2   3   4 import java.util.ArrayList;  5 import java.util.Arrays;  6 import java.util.LinkedHashSet;  7 import java.util.List;  8 import java.util.Set;  9  10 import Oracle.net.aso.e; 11  12 import org.hibernate.Criteria; 13 import org.hibernate.Query; 14 import org.hibernate.session; 15 import org.hibernate.SessionFactory; 16 import org.hibernate.Transaction; 17 import org.hibernate.cfg.Configuration; 18 import org.hibernate.criterion.Conjunction; 19 import org.hibernate.criterion.Disjunction; 20 import org.hibernate.criterion.MatchMode; 21 import org.hibernate.criterion.Order; 22 import org.hibernate.criterion.PRojection; 23 import org.hibernate.criterion.Projections; 24 import org.hibernate.criterion.Restrictions; 25 import org.hibernate.service.ServiceRegistry; 26 import org.hibernate.service.ServiceRegistryBuilder; 27 import org.junit.After; 28 import org.junit.Before; 29 import org.junit.Test; 30  31 import com.yl.hibernate.entities.Department; 32 import com.yl.hibernate.entities.Employee; 33  34 public class HibernateTest { 35  36     private SessionFactory sessionFactory; 37     private Session session; 38     private Transaction transaction; 39      40     @Before 41     public void init() { 42         Configuration configuration = new Configuration().configure(); 43         ServiceRegistry serviceRegistry =  44                 new ServiceRegistryBuilder().applySettings(configuration.getProperties()) 45                                             .buildServiceRegistry(); 46  47         sessionFactory = configuration.buildSessionFactory(serviceRegistry); 48          49         session = sessionFactory.openSession(); 50  51         transaction = session.beginTransaction(); 52     } 53     @After 54     public void destory() { 55         transaction.commit(); 56          57         session.close(); 58          59         sessionFactory.close(); 60     } 61      62      63     @Test 64     public void testQBC() { 65         //1.創建一個Ctiteria對象 66         Criteria criteria = session.createCriteria(Employee.class); 67         //2.添加查詢條件:在QBC中查詢條件使用Criterion來表示 68         //Criterion可以通過Restrictions 的靜態方法得到 69         criteria.add(Restrictions.eq("email", "PRESIDENT")); 70         criteria.add(Restrictions.gt("salary", 500f)); 71         //3.執行查詢 72         Employee employee = (Employee) criteria.uniqueResult(); 73         System.out.println(employee); 74     } 75      76     @Test 77     public void testQBC2() { 78          79         Criteria criteria = session.createCriteria(Employee.class); 80         //1.AND: 使用Conjunction表示 81         //Conjunction 本身就是一個Criterion對象 82         //且其中還可以添加Criterion對象 83         Conjunction conjunction = Restrictions.conjunction(); 84         conjunction.add(Restrictions.like("name", "A", MatchMode.ANYWHERE)); 85         Department dept = new Department(); 86         dept.setId(20); 87         conjunction.add(Restrictions.eq("dept", dept)); 88         System.out.println(conjunction); 89          90         //2. OR 91         Disjunction disjunction = Restrictions.disjunction(); 92         disjunction.add(Restrictions.ge("salary", 1000F)); 93         disjunction.add(Restrictions.isNotNull("email")); 94          95         criteria.add(disjunction); 96         criteria.add(conjunction); 97          98         criteria.list(); 99         /**100          *  where101         (102             this_.SALARY>=? 103             or this_.EMAIL is not null104         ) 105         and (106             this_.NAME like ? 107             and this_.DEPT_ID=?108         )109          */110     }111     112     @Test113     public void testQBC3() {114         Criteria criteria = session.createCriteria(Employee.class);115         116         //統計查詢: 使用Projection表示: 可以由Projections的靜態方法得到117         criteria.setProjection(Projections.max("salary"));118         119         System.out.println(criteria.uniqueResult());120     }121     122     @Test123     public void testQBC4() {124         Criteria criteria = session.createCriteria(Employee.class);125         126         //1.添加排序127         criteria.addOrder(Order.asc("salary"));128         criteria.addOrder(Order.desc("email"));129         130         //2.添加分頁131         int pageSize = 3;132         int pageNo = 2;133         criteria.setFirstResult((pageNo - 1) * pageSize)134                 .setMaxResults(pageSize)135                 .list();136         137     }138     139     @Test140     public void testNative() {141         String sql = "INSERT INTO YL_department VALUES(?, ?)";142         Query query = session.createSQLQuery(sql);143         144         query.setInteger(0, 50)145              .setString(1, "DEV")146              .executeUpdate();147     }148     149     @Test150     public void testHQLUpdate() {151         String hql = "DELETE FROM Department d WHERE d.id = :id";152         153         session.createQuery(hql).setInteger("id", 50)154                                 .executeUpdate();155         156     }157 }


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 太保市| 安岳县| 托克逊县| 界首市| 绍兴市| 绩溪县| 龙井市| 东明县| 河曲县| 息烽县| 通河县| 祁阳县| 油尖旺区| 日土县| 萝北县| 宝清县| 依兰县| 昂仁县| 龙门县| 建瓯市| 鄂托克前旗| 安泽县| 始兴县| 深泽县| 忻城县| 栾城县| 武强县| 浏阳市| 武山县| 鸡泽县| 杨浦区| 搜索| 汽车| 陆良县| 雷山县| 石台县| 涿鹿县| 磐石市| 开江县| 鄂温| 张家川|