Hibernate HQL基本查询

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC 
	"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
	"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
	<!-- name属性指定类名(全限定名) table指明表名,不指明table数据默认的表名和实体名一致 -->
    <class name="model.Account" table="acc_tab">
    	<!-- type指明当前字段的类型    name对应实体中的属性名 -->
        <id type="integer" name="id">
        	<!-- 提供ID自增的策略  native会根据数据库自行判断 -->
            <generator class="native"/>
        </id>
        <property name="name" type="string"></property>
        <property name="age" type="integer"></property>
        <property name="score" type="double"></property>
        <property name="birthday" type="date"></property>
    </class>
		<query name="queryName">
<![CDATA[FROM Account]]>
		</query>
</hibernate-mapping>
package test;


import java.util.List;

import model.Account;

import org.hibernate.Query;
import org.hibernate.Session;

import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
import org.junit.Test;

import util.HibernateUtils;

public class AccountTest3 {

	@Test
	public void createTable(){
		//加载hibernate.cfg.xml文件并解析
		Configuration cfg=new Configuration().configure();
		SchemaExport se=new SchemaExport(cfg);
		//对生成的DDL语句进行格式化
		se.setFormat(true);
		se.setDelimiter(" ");
		se.setOutputFile("account.sql");
		se.create(true, true);
	}
	@Test
	public void findAll(){
		Session session=HibernateUtils.getSession();
		Transaction tr=session.beginTransaction();
		
		String sql="from Account";
		Query query=session.createQuery(sql);
		List<Account> list=(List<Account>)query.list();
		for(Account acc:list){
			System.out.println(acc);
		}
		tr.commit();
		HibernateUtils.close(session);
	}
	
	@Test
	public void findUnique(){
		Session session=HibernateUtils.getSession();
		Transaction tr=session.beginTransaction();
		
		String sql="from Account";
		Query query=session.createQuery(sql);
		
		Account acc=(Account)query.setMaxResults(1).uniqueResult();
		System.out.println(acc);
		tr.commit();
		HibernateUtils.close(session);
	}
	
	/**
	 * 投影查询
	 */
	@Test
	public void find2(){
		Session session=HibernateUtils.getSession();
		Transaction tr=session.beginTransaction();
		
		String sql="select name,age from Account";
		Query query=session.createQuery(sql);
		List list=query.list();
		for(int i=0;i<list.size();i++){
			Object[]obj=(Object[])list.get(i);
			System.out.println(obj[0]+"--->"+obj[1]);
		}
		tr.commit();
		HibernateUtils.close(session);
	}
	
	@Test
	public void find3(){
		Session session=HibernateUtils.getSession();
		Transaction tr=session.beginTransaction();
		
		String sql="select new Account(name,age) from Account";
		Query query=session.createQuery(sql);
		List<Account> list=(List<Account>)query.list();
		for(Account acc:list){
			System.out.println(acc);
		}
		tr.commit();
		HibernateUtils.close(session);
	}
	
	@Test
	public void find4(){
		Session session=HibernateUtils.getSession();
		Transaction tr=session.beginTransaction();
		
		String sql="select upper(name) from Account";
		Query query=session.createQuery(sql);
		List list=query.list();
		for(int i=0;i<list.size();i++){
			System.out.println(list.get(i));
		}
		tr.commit();
		HibernateUtils.close(session);
	}
	
	@Test
	public void find5(){
		Session session=HibernateUtils.getSession();
		Transaction tr=session.beginTransaction();
		
		String sql="select upper(name),current_date() from Account";
		Query query=session.createQuery(sql);
		List list=query.list();
		for(int i=0;i<list.size();i++){
			Object[]obj=(Object[])list.get(i);
			System.out.println(obj[0]+"--->"+obj[1]);
		}
		tr.commit();
		HibernateUtils.close(session);
	}
	
	@Test
	public void find6(){
		Session session=HibernateUtils.getSession();
		Transaction tr=session.beginTransaction();
		
		String sql="from Account where score>:mins";
		Query query=session.createQuery(sql);
		query.setDouble("mins", 90);
		
		List<Account> list=(List<Account>)query.list();
		for(Account acc:list){
			
			System.out.println(acc);
		}
		tr.commit();
		HibernateUtils.close(session);
	}
	
	@Test
	public void find7(){
		Session session=HibernateUtils.getSession();
		Transaction tr=session.beginTransaction();
		
		String sql="from Account where score>?";
		Query query=session.createQuery(sql);
		query.setDouble(0, 90);
		
		List<Account> list=(List<Account>)query.list();
		for(Account acc:list){
			
			System.out.println(acc);
		}
		tr.commit();
		HibernateUtils.close(session);
	}
	@Test
	public void find8(){
		Session session=HibernateUtils.getSession();
		Transaction tr=session.beginTransaction();
		
		String sql="from Account";
		Query query=session.createQuery(sql).setFirstResult(3).setMaxResults(3);
		
		
		List<Account> list=(List<Account>)query.list();
		for(Account acc:list){
			
			System.out.println(acc);
		}
		tr.commit();
		HibernateUtils.close(session);
	}
	@Test
	public void delete(){
		Session session=HibernateUtils.getSession();
		Transaction tr=session.beginTransaction();
		
		String sql="delete from Account where id=7";
		Query query=session.createQuery(sql);
		int i=query.executeUpdate();
		if(i>0){
			System.out.println("删除成功");
		}else{
			System.out.println("删除失败");
		}
		tr.commit();
		HibernateUtils.close(session);
	}
	
	@Test
	public void update(){
		Session session=HibernateUtils.getSession();
		Transaction tr=session.beginTransaction();
		
		String sql="update Account set age=19 where id=6";
		Query query=session.createQuery(sql);
		int i=query.executeUpdate();
		if(i>0){
			System.out.println("修改成功");
		}else{
			System.out.println("修改失败");
		}
		tr.commit();
		HibernateUtils.close(session);
	}
	
	/**
	 * 命名查询
	 */
	@Test
	public void find9(){
		Session session=HibernateUtils.getSession();
		Transaction tr=session.beginTransaction();
		
		Query query=session.getNamedQuery("queryName");
		
		List<Account> list=(List<Account>)query.list();
		for(Account acc:list){
			
			System.out.println(acc);
		}
		tr.commit();
		HibernateUtils.close(session);
	}
}


你可能感兴趣的:(Hibernate HQL基本查询)