HQL

HQL————-Hibernate Query Language

HQL语言具有很高的兼容性

工具类HibernateSessionFactory:

package com.yyy.db;

import org.hibernate.Session;
import org.hibernate.cfg.Configuration;

public class HibernateSessionFactory {
    private static String source = "\\hibernate.cfg.xml";
    private static Configuration config;
    private static org.hibernate.SessionFactory sf;
    private static Session session;

    static {
        config = new Configuration().configure(source);
        sf = config.buildSessionFactory();
    }

    public static Session getSession() {
        session = sf.openSession();
        return session;
    }

    public static void closeSession(Session s) {
        s.close();
    }

    public static void chengeSource(String s) {
        source = s;
    }

}

使用hql语言的四个步骤:
1.得到session

session = HibernateSessionFactory.getSession();

2.编写HQL语言

String hql="from userInfo";

3.创建query

 Query query =session.createQuery(hql);

4.执行查询

 List list =query.list();

HQL 语句:

String hql="from UserInfo";
 //这个UserInfo不是数据库中的表名,而是类名
 //当查询整张表时,可以省略from前边的语句

模糊查询 like %xxxx%

String hql ="from UserInfo u where u.userName like %张三%"

用?协助查询

String hql="from UserInfo u where u.userName like ? and u.userId>?";
Query query =session.createQuery(hql);
query.setSting(0,"张三");
query.setInteger(1,10);

用命名对象协助查询

String hql="from UserInfo u where u.userName like :m1 and u.userId>:m2";
Query query =session.createQuery(hql);
query.setSting("m1","张三"); //可以跟常量
query.setInteger("m2",m2);  //也可以跟变量

多表联合查询

String hql="from UserInfo u ,ClassInfo c where u.userId= c.userName;

返回的是一个二位数组
from之后的 表名 ,第几个表, 就是在二位数组中外围数组的下标

子查询

String hql="select userName from UserInfo u where u.userId in(select c.userId from ClassInfo c);

嵌套子查询返回一个一维数组

Query的分页查询:

public list serach(int pageNow,int pageSize){
  query.setFirstResult((pageNow-1)*pageSize);
  query.setMaxResult(pageSize);
  list =query.list();
}

注意:
在执行非select操作的时候 要在hibernate.cfg.xml中 加入:

<property name="hibernate.query.factory.class">
  org.hibernate.hql.ast.AstQueryTranslatorFactory
</property>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值