1. 程式人生 > >Hibernate使用hql語句操作資料庫

Hibernate使用hql語句操作資料庫

使用hql語句,對資料庫進行批量查詢、條件查詢、分頁查詢

package com.kd.test;

import java.util.List;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.query.Query;
import org.junit.Test;

import com.kd.entity.User;

public class Demo01 {
	//hql的批量查詢
	@Test
	public void fun(){
		//獲取配置檔案物件
		Configuration config=new Configuration().configure();
		//構建SessionFactory
		SessionFactory factory = config.buildSessionFactory();
		//生產session,可以理解為jdbc中的connection
		Session session = factory.openSession();
		//開啟事務
		Transaction transaction = session.beginTransaction();
		//建立hql語句
		String hql ="from User";
		//建立查詢
		Query query = session.createQuery(hql);
		List list = query.list();
		//提交事務
		transaction.commit();
		//關閉session
		session.close();
		System.out.println(list);
	}
	//hql條件查詢
	@Test
	public void fun1(){
		//獲取配置檔案物件
		Configuration config=new Configuration().configure();
		//構建SessionFactory
		SessionFactory factory = config.buildSessionFactory();
		//生產session,可以理解為jdbc中的connection
		Session session = factory.openSession();
		//開啟事務
		Transaction transaction = session.beginTransaction();
		//建立hql語句,命名佔位符
		String hql ="from User where id=:id";
		//佔位符
//		String hql="from User where id=?0";
		//建立查詢
		Query query = session.createQuery(hql);
		query.setParameter("id", 1);
//		佔位符使用query.setParameter(0, 1)
//		query.setParameter(0, 1);
		User user = (User) query.uniqueResult();
		//提交事務
		transaction.commit();
		//關閉session
		session.close();
		System.out.println(user);
	}
	
	//hql的分頁查詢
	@Test
	public void fun2(){
		//獲取配置檔案物件
		Configuration config=new Configuration().configure();
		//構建SessionFactory
		SessionFactory factory = config.buildSessionFactory();
		//生產session,可以理解為jdbc中的connection
		Session session = factory.openSession();
		//開啟事務
		Transaction transaction = session.beginTransaction();
		//建立hql語句
		String hql ="from User";
		Query query = session.createQuery(hql);
		//從哪開始==pageindex
		query.setFirstResult(1);
		//查詢幾條==pagesize
		query.setMaxResults(3);
		List list = query.list();
		//提交事務
		transaction.commit();
		//關閉session
		session.close();
		System.out.println(list);
	}
}