Hibernate查询_HQL_EJBQL_QBC_QBE…

本文介绍了五种ORM查询方式,包括NativeSQL、HQL、EJBQL、QBC和QBE,并通过实例展示了每种方式的特点及使用场景。其中,NativeSQL功能最为强大,而QBC和QBE更符合面向对象编程。

查询按功能强弱可以分为以下几种:
Native SQL > HQL > EJBQL > QBC > QBE

1、Native SQL
Native SQL为数据库系统本身的SQL,里面包含了一些特有的函数等,功能也最为强大。
如:

 1 Hibernate查询_HQL_EJBQL_QBC_QBE(转)     @Test
 2 Hibernate查询_HQL_EJBQL_QBC_QBE(转)     public   void  testHQL_34()  {
 3Hibernate查询_HQL_EJBQL_QBC_QBE(转)        Session session = sf.openSession();
 4Hibernate查询_HQL_EJBQL_QBC_QBE(转)        session.beginTransaction();
 5Hibernate查询_HQL_EJBQL_QBC_QBE(转)        //下面查询使用的函数是Session的createSQLQuery
 6Hibernate查询_HQL_EJBQL_QBC_QBE(转)        SQLQuery = session.createSQLQuery("select from category limit 2,4").addEntity(Category.class);
 7Hibernate查询_HQL_EJBQL_QBC_QBE(转)        List<</span>Category> categories = (List<</span>Category>)q.list();
 8Hibernate查询_HQL_EJBQL_QBC_QBE(转)        for(Category categories) {
 9Hibernate查询_HQL_EJBQL_QBC_QBE(转)            System.out.println(c.getName());
10Hibernate查询_HQL_EJBQL_QBC_QBE(转)        }
11Hibernate查询_HQL_EJBQL_QBC_QBE(转)        session.getTransaction().commit();
12Hibernate查询_HQL_EJBQL_QBC_QBE(转)        session.close();
13Hibernate查询_HQL_EJBQL_QBC_QBE(转)        
14Hibernate查询_HQL_EJBQL_QBC_QBE(转)    }
2、HQL
Hibernate提供的面向对象查询语言。
如:
 1 Hibernate查询_HQL_EJBQL_QBC_QBE(转)     @Test
 2 Hibernate查询_HQL_EJBQL_QBC_QBE(转)     public   void  testHQL_02()  {
 3Hibernate查询_HQL_EJBQL_QBC_QBE(转)        Session session = sf.openSession();
 4Hibernate查询_HQL_EJBQL_QBC_QBE(转)        session.beginTransaction();
 5Hibernate查询_HQL_EJBQL_QBC_QBE(转)        //Category是对象名而不是数据表名
 6Hibernate查询_HQL_EJBQL_QBC_QBE(转)        Query = session.createQuery("from Category where c.name 'c5'");
 7Hibernate查询_HQL_EJBQL_QBC_QBE(转)        List<</span>Category> categories = (List<</span>Category>)q.list();
 8Hibernate查询_HQL_EJBQL_QBC_QBE(转)        for(Category categories) {
 9Hibernate查询_HQL_EJBQL_QBC_QBE(转)            System.out.println(c.getName());
10Hibernate查询_HQL_EJBQL_QBC_QBE(转)        }
11Hibernate查询_HQL_EJBQL_QBC_QBE(转)        session.getTransaction().commit();
12Hibernate查询_HQL_EJBQL_QBC_QBE(转)        session.close();
13Hibernate查询_HQL_EJBQL_QBC_QBE(转)        
14Hibernate查询_HQL_EJBQL_QBC_QBE(转)    }
3、EJBQL
与HQL类似,是HQL的一个子集

4、QBC
Query By Criteria,即带约束/条件的查询
如:
 1 Hibernate查询_HQL_EJBQL_QBC_QBE(转)     @Test
 2 Hibernate查询_HQL_EJBQL_QBC_QBE(转)     public   void  testQBC()  {
 3Hibernate查询_HQL_EJBQL_QBC_QBE(转)        Session session = sf.openSession();
 4Hibernate查询_HQL_EJBQL_QBC_QBE(转)        session.beginTransaction();
 5Hibernate查询_HQL_EJBQL_QBC_QBE(转)        //criterion 标准/准则/约束
 6Hibernate查询_HQL_EJBQL_QBC_QBE(转)        Criteria = session.createCriteria(Topic.class//from Topic
 7Hibernate查询_HQL_EJBQL_QBC_QBE(转)                     
 8Hibernate查询_HQL_EJBQL_QBC_QBE(转)                     .add(Restrictions.gt("id"2)) //greater than id 2
 9Hibernate查询_HQL_EJBQL_QBC_QBE(转)                     .add(Restrictions.lt("id"8)) //little than id 8
10Hibernate查询_HQL_EJBQL_QBC_QBE(转)                     .add(Restrictions.like("title""t_"))
11Hibernate查询_HQL_EJBQL_QBC_QBE(转)                     .createCriteria("category")
12Hibernate查询_HQL_EJBQL_QBC_QBE(转)                     .add(Restrictions.between("id"35)) //category.id >= and category.id <=5
13Hibernate查询_HQL_EJBQL_QBC_QBE(转)                     ;
14Hibernate查询_HQL_EJBQL_QBC_QBE(转)
15Hibernate查询_HQL_EJBQL_QBC_QBE(转)        //DetachedCriterea
16Hibernate查询_HQL_EJBQL_QBC_QBE(转)        for(Object c.list()) {
17Hibernate查询_HQL_EJBQL_QBC_QBE(转)            Topic = (Topic)o;
18Hibernate查询_HQL_EJBQL_QBC_QBE(转)            System.out.println(t.getId() + "-" + t.getTitle());
19Hibernate查询_HQL_EJBQL_QBC_QBE(转)        }
20Hibernate查询_HQL_EJBQL_QBC_QBE(转)        session.getTransaction().commit();
21Hibernate查询_HQL_EJBQL_QBC_QBE(转)        session.close();
22Hibernate查询_HQL_EJBQL_QBC_QBE(转)        
23Hibernate查询_HQL_EJBQL_QBC_QBE(转)    }
5、QBE
Query By Example
如:
 1 Hibernate查询_HQL_EJBQL_QBC_QBE(转)     @Test
 2 Hibernate查询_HQL_EJBQL_QBC_QBE(转)     public   void  testQBE()  {
 3Hibernate查询_HQL_EJBQL_QBC_QBE(转)        Session session = sf.openSession();
 4Hibernate查询_HQL_EJBQL_QBC_QBE(转)        session.beginTransaction();
 5Hibernate查询_HQL_EJBQL_QBC_QBE(转)        Topic tExample = new Topic();
 6Hibernate查询_HQL_EJBQL_QBC_QBE(转)        tExample.setTitle("T_");
 7Hibernate查询_HQL_EJBQL_QBC_QBE(转)        
 8Hibernate查询_HQL_EJBQL_QBC_QBE(转)        //创建一个例子对象,然后设置其相应的属性
 9Hibernate查询_HQL_EJBQL_QBC_QBE(转)        //QBE仅适合于给特定值的查询
10Hibernate查询_HQL_EJBQL_QBC_QBE(转)        Example = Example.create(tExample)
11Hibernate查询_HQL_EJBQL_QBC_QBE(转)                    .ignoreCase().enableLike();
12Hibernate查询_HQL_EJBQL_QBC_QBE(转)        //QBC除了添加自己的条件,最后将例子对象e也当成条件添加进来
13Hibernate查询_HQL_EJBQL_QBC_QBE(转)        //QBC可以添加给特定值的条件,也可添加给了一定范围的条件
14Hibernate查询_HQL_EJBQL_QBC_QBE(转)        Criteria = session.createCriteria(Topic.class)
15Hibernate查询_HQL_EJBQL_QBC_QBE(转)                     .add(Restrictions.gt("id"2))
16Hibernate查询_HQL_EJBQL_QBC_QBE(转)                     .add(Restrictions.lt("id"8))
17Hibernate查询_HQL_EJBQL_QBC_QBE(转)                     .add(e)
18Hibernate查询_HQL_EJBQL_QBC_QBE(转)                     ;
19Hibernate查询_HQL_EJBQL_QBC_QBE(转)        //from Topic where t.id>2 and t.id<8 and t.title like 'T_'
20Hibernate查询_HQL_EJBQL_QBC_QBE(转)                     
21Hibernate查询_HQL_EJBQL_QBC_QBE(转)        
22Hibernate查询_HQL_EJBQL_QBC_QBE(转)        for(Object c.list()) {
23Hibernate查询_HQL_EJBQL_QBC_QBE(转)            Topic = (Topic)o;
24Hibernate查询_HQL_EJBQL_QBC_QBE(转)            System.out.println(t.getId() + "-" + t.getTitle());
25Hibernate查询_HQL_EJBQL_QBC_QBE(转)        }
26Hibernate查询_HQL_EJBQL_QBC_QBE(转)        session.getTransaction().commit();
27Hibernate查询_HQL_EJBQL_QBC_QBE(转)        session.close();
28Hibernate查询_HQL_EJBQL_QBC_QBE(转)        
29Hibernate查询_HQL_EJBQL_QBC_QBE(转)    }

以上几种方法,其中QBC、QBE更加符合面向对象编程(仅此而已)。

下载前可以先看下教程 https://pan.quark.cn/s/16a53f4bd595 小天才电话手表刷机教程 — 基础篇 我们将为您简单的介绍小天才电话手表新机型的简单刷机以及玩法,如adb工具的使用,magisk的刷入等等。 我们会确保您看完此教程后能够对Android系统有一个最基本的认识,以及能够成功通过magisk root您的手表,并安装您需要的第三方软件。 ADB Android Debug Bridge,简称,在android developer的adb文档中是这么描述它的: 是一种多功能命令行工具,可让您与设备进行通信。 该命令有助于各种设备操作,例如安装和调试应用程序。 提供对 Unix shell 的访问,您可以使用它在设备上运行各种命令。 它是一个客户端-服务器程序。 这听起来有些难以理解,因为您也没有必要去理解它,如果您对本文中的任何关键名词产生疑惑或兴趣,您都可以在搜索引擎中去搜索它,当然,我们会对其进行简单的解释:是一款在命令行中运行的,用于对Android设备进行调试的工具,并拥有比一般用户以及程序更高的权限,所以,我们可以使用它对Android设备进行最基本的调试操作。 而在小天才电话手表上启用它,您只需要这么做: - 打开拨号盘; - 输入; - 点按打开adb调试选项。 其次是电脑上的Android SDK Platform-Tools的安装,此工具是 Android SDK 的组件。 它包括与 Android 平台交互的工具,主要由和构成,如果您接触过Android开发,必然会使用到它,因为它包含在Android Studio等IDE中,当然,您可以独立下载,在下方选择对应的版本即可: - Download SDK Platform...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值