jdbc查詢數據庫代碼,Hibernate查詢_HQL_EJBQL_QBC_QBE

 2023-11-18 阅读 24 评论 0

摘要:查詢按功能強弱可以分為以下幾種:Native SQL > HQL > EJBQL > QBC > QBE1、Native SQLNative SQL為數據庫系統本身的SQL,里面包含了一些特有的函數等,功能也最為強大。如: 1????@Test?2????public?void?testHQL_34()?{?3????????

查詢按功能強弱可以分為以下幾種:
Native SQL > HQL > EJBQL > QBC > QBE

1、Native SQL
Native SQL為數據庫系統本身的SQL,里面包含了一些特有的函數等,功能也最為強大。
如:

1????@Test
?2????public?void?testHQL_34()?{
?3????????Session?session?=?sf.openSession();
?4????????session.beginTransaction();
?5????????//下面查詢使用的函數是Session的createSQLQuery
?6????????SQLQuery?q?=?session.createSQLQuery("select?*?from?category?limit?2,4").addEntity(Category.class);
?7????????List<Category>?categories?=?(List<Category>)q.list();
?8????????for(Category?c?:?categories)?{
?9????????????System.out.println(c.getName());
10????????}
11????????session.getTransaction().commit();
12????????session.close();
13????????
14????}

2、HQL
Hibernate提供的面向對象查詢語言。
如:

1????@Test
?2????public?void?testHQL_02()?{
?3????????Session?session?=?sf.openSession();
?4????????session.beginTransaction();
?5????????//Category是對象名而不是數據表名
?6????????Query?q?=?session.createQuery("from?Category?c?where?c.name?>?'c5'");
?7????????List<Category>?categories?=?(List<Category>)q.list();
?8????????for(Category?c?:?categories)?{
?9????????????System.out.println(c.getName());
10????????}
11????????session.getTransaction().commit();
12????????session.close();
13????????
14????}

jdbc查詢數據庫代碼、 3、EJBQL
與HQL類似,是HQL的一個子集

4、QBC
Query By Criteria,即帶約束/條件的查詢
如:

1????@Test
?2????public?void?testQBC()?{
?3????????Session?session?=?sf.openSession();
?4????????session.beginTransaction();
?5????????//criterion?標準/準則/約束
?6????????Criteria?c?=?session.createCriteria(Topic.class)?//from?Topic
?7?????????????????????
?8?????????????????????.add(Restrictions.gt("id",?2))?//greater?than?=?id?>?2
?9?????????????????????.add(Restrictions.lt("id",?8))?//little?than?=?id?<?8
10?????????????????????.add(Restrictions.like("title",?"t_"))
11?????????????????????.createCriteria("category")
12?????????????????????.add(Restrictions.between("id",?3,?5))?//category.id?>=?3?and?category.id?<=5
13?????????????????????;
14
15????????//DetachedCriterea
16????????for(Object?o?:?c.list())?{
17????????????Topic?t?=?(Topic)o;
18????????????System.out.println(t.getId()?+?"-"?+?t.getTitle());
19????????}
20????????session.getTransaction().commit();
21????????session.close();
22????????
23????}

5、QBE
Query By Example
如:

1????@Test
?2????public?void?testQBE()?{
?3????????Session?session?=?sf.openSession();
?4????????session.beginTransaction();
?5????????Topic?tExample?=?new?Topic();
?6????????tExample.setTitle("T_");
?7????????
?8????????//創建一個例子對象,然后設置其相應的屬性
?9????????//QBE僅適合于給特定值的查詢
10????????Example?e?=?Example.create(tExample)
11????????????????????.ignoreCase().enableLike();
12????????//QBC除了添加自己的條件,最后將例子對象e也當成條件添加進來
13????????//QBC可以添加給特定值的條件,也可添加給了一定范圍的條件
14????????Criteria?c?=?session.createCriteria(Topic.class)
15?????????????????????.add(Restrictions.gt("id",?2))
16?????????????????????.add(Restrictions.lt("id",?8))
17?????????????????????.add(e)
18?????????????????????;
19????????//from?Topic?t?where?t.id>2?and?t.id<8?and?t.title?like?'T_'
20?????????????????????
21????????
22????????for(Object?o?:?c.list())?{
23????????????Topic?t?=?(Topic)o;
24????????????System.out.println(t.getId()?+?"-"?+?t.getTitle());
25????????}
26????????session.getTransaction().commit();
27????????session.close();
28????????
29????}


以上幾種方法,其中QBC、QBE更加符合面向對象編程(僅此而已)。

hbase查詢?轉載于:https://www.cnblogs.com/printN/p/6415642.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/2/174400.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息