HQL条件查询 --- Hibernate入门学习之HQL数据库查询方式之三

叙:HQL是一个完全面向对象的数据库查询语言,提供有针对多种情况下的查询方式,之前已有一些已经学习并记录了,下面电虫就条件查询进行记录一下,后面的会继续学习;


Hibernate的HQL查询之条件查询

条件查询有两个点需要注意,一个是占位符类型,另一个是占位符的实际值填充;


代码:

@Test
    /*
     * 条件查询
     */
    public void demo3() {
        Session session = HibernateUtils.openSession();
        Transaction bt = session.beginTransaction();

        //String hql = "from Customer where cust_id=?";
        String hql1 = "from Customer where cust_id=:id ";
        Query cust = session.createQuery(hql1);
        //cust.setParameter(0, 2l);
        cust.setParameter("id", 2l);
        List list = cust.list();
        System.out.println(list);

        bt.commit();
        session.close();
    }

分析:

上面有两行被注释掉了,分别是:查询语句和占位符的实际值填充这两句,那么就这两句进行学习;
查询语句hql:它是以“?”进行占位的,使用?进行占位是比较常见的一种,在学习Java基础的时候会接触到一些,但是在hibernate中还是与基础的有些差别的,差别点就在于在占位符的实际值填充时hibernate的是从0开始排序的,即第一个占位符的序号为0,而基础学习中第一个占位符的序号为1,不要搞混了;
查询语句hql1:它以“:id”这个代号进行占位的,注意,是冒号id,没错,id前边还有个冒号(不要问是中文冒号还是英文冒号,我是不会告诉你的,嘿嘿~),这个占位符就厉害了,在进行占位符的实际值填充时不需要写序号,直接写代号就好,但是这个写的代号又需要注意,不要加上冒号,这个冒号只要在查询语句中的“=”之后的代号前写就行了,不需要在实际值的填充中写出来;

总结:

查询语句书写及其对应的实际值填充方式:

  • 问号占位符: String hql = “from Customer where cust_id=?”;
    其实际值填充:cust.setParameter(0, 2l);
    注意:第一个占位符的序号为0(2l是要查询的cust_id值,因为我的数据库表中这个列的属性是Long这个包装类型的,所以要在数字后边加小写的L);

  • 代号占位:String hql1 = “from Customer where cust_id=:id “;
    其实际值填充:cust.setParameter(“id”,2l);
    注意:将查询语句中的代号放到序号位,不要忘记加引号,不要加冒号。

pass:这两种查询语句必须对应自己的实际值填充方式,在代码开发中实际用哪个没有太大区别;


《本节完》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清风暖云

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值