文档章节

Hibernate HQL基本查询

萧小蚁
 萧小蚁
发布于 2015/06/13 18:45
字数 672
阅读 6
收藏 0
<?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);
	}
}


© 著作权归作者所有

共有 人打赏支持
萧小蚁

萧小蚁

粉丝 98
博文 279
码字总数 192339
作品 0
海淀
程序员
hibernate操作数据库总结

这篇文章用于总结hibernate操作数据库的各种方法 一、query方式 1、hibernate使用原生态的sql语句执行数据库查询 有些时候有些开发人员总觉得用hql语句不踏实,程序出现了错误,就猜测因为不...

小思绪跌跌撞撞仰望天空
2016/08/18
15
0
Java程序员从笨鸟到菜鸟之(六十四)细谈Hibernate(十五)HQL与QBC查询方式详解

首先来看一下,hibernate提供的几种检索方式: 1.导航对象图检索方式 :根据已经加载的对象,导航到其他对象。例如,对于已经加载的Customer对象,调用它的getOrders().iterator()方法就可以...

长平狐
2012/11/12
155
0
Hibernate入门

Hibernate简介 Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的ORM框架,hibernate可以自动生成SQL语句...

iborder
2016/10/31
34
0
学习hibernate(八) -- HQL查询语句

HQL语句 HQL(Hibernate Query Language)提供更加丰富灵活、更为强大的查询能力。 可设定WHERE 可进行投影查询 可分页 可分组 可做连接查询 有聚合函数 支持子查询 可动态绑定参数 先看一个H...

杰克鹏仔
2016/04/11
103
0
Hibernate 中 load方法与get方法以及Query查询与Criteria查询

本来之前学过Hibernate的,但是近期接到一个项目,为了方便开发,还有考虑到对Hibernate的不足,重新花了4天由浅入深学了下。 在此,Hibernate里面涉及到多种查询的方法,但是每个方法特性并...

WilsonET
2013/05/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

防止快速重复点击的两种思维

防止重复执行的两种思维 场景 下单时,提交按钮,因为网络卡顿或者手快重复点击,导致重复提交订单; 微博,更新个人状态或发表评论时,快速多次点击[发送]按钮,导致相同的信息发送多次. 解决思路 ...

黄威
38分钟前
0
0
在windows环境下使用Virtualbox虚拟Debian系统来运行Docker

标题绕口。 我之前一直使用 Virtualbox 和 homestead 来运行我的 PHP 开发环境。最近决心开始尝试 DevOps,使得开发、部署容器化,来化解人为操作失误和环境不兼容等问题造成的各种损失。就打...

zgldh
40分钟前
0
0
python map()

map()函数 map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。(利用生成器的原理,并不马上返回值,...

南桥北木
54分钟前
0
0
分享几个 SpringBoot 实用的小技巧

前言 最近分享的一些源码、框架设计的东西。我发现大家热情不是特别高,想想大多数应该还是正儿八经写代码的居多;这次就分享一点接地气的: SpringBoot 使用中的一些小技巧。 算不上多高大上...

Java干货分享
54分钟前
2
0
day123-20181021-英语流利阅读-待学习

这款新字体,比记忆面包还管用 Lala 2018-10-21 1.今日导读 字体能跟学习效果有什么关系?你还别说,来自澳洲的心理学家和设计师们,还真创造了一款号称能够帮助大家记忆信息、增强学习效果的...

飞鱼说编程
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部