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

版权声明:转载时请注明出处! https://blog.csdn.net/qq_40762011/article/details/82146196

叙: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:这两种查询语句必须对应自己的实际值填充方式,在代码开发中实际用哪个没有太大区别;


《本节完》

猜你喜欢

转载自blog.csdn.net/qq_40762011/article/details/82146196