文档章节

Hibernate HQL基本查询

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


© 著作权归作者所有

共有 人打赏支持
萧小蚁

萧小蚁

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

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

小思绪跌跌撞撞仰望天空 ⋅ 2016/08/18 ⋅ 0

Java程序员从笨鸟到菜鸟之(六十四)细谈Hibernate(十五)HQL与QBC查询方式详解

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

长平狐 ⋅ 2012/11/12 ⋅ 0

Hibernate入门

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

iborder ⋅ 2016/10/31 ⋅ 0

学习hibernate(八) -- HQL查询语句

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

杰克鹏仔 ⋅ 2016/04/11 ⋅ 0

第一篇,整体架构hibernate dao篇

对于架构,我的目标是简单,好用,写少量的代码。 到目前为止,我的目标基本达到了。 目前架构是struts2+spring3+hibernate3,大量使用注解,尽可能少的xml配置文件。 典型的MVC架构。 1、先...

yeshujun ⋅ 2012/12/29 ⋅ 4

Hibernate 中 load方法与get方法以及Query查询与Criteria查询

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

WilsonET ⋅ 2013/05/28 ⋅ 0

Hibernate使用小记

在使用Hibernate开发的过程中,遇到场景in条件查询,查询条件里的个数超过1w甚至更高(且不讨论这种方式是否合理),在生成hql,执行查询的时候发现执行list()方法的时候特别慢。后经从网查询...

Only_小白 ⋅ 2016/05/10 ⋅ 0

hql语句的语法

hql语句的语法 一、HQL查询的from子句 from是最简单的语句,也是最基本的HQL语句。from关键字后紧跟持久化类的类名。 例如: from Person 表明从Person持久化类中选出全部的实例 推荐为Perso...

风中帆 ⋅ 2016/08/23 ⋅ 0

(J2EE学习笔记)六种方式实现hibernate查询

对Hibernate的底层调用数据库查询并不是很了解,引用了这位前辈的一篇博文。 注明文章出处:http://www.cnblogs.com/shiyangxt/archive/2009/01/13/1375151.html 实现hibernate查询的六种方式...

w1sw ⋅ 2016/04/15 ⋅ 0

hql 转化为 sql ,满足仅仅用hibernate无法实现的sql构建

如下方法能将hql转换为sql,便于在系统总体是用hibernate查询的情况下,加入一些特殊查询条件的sql语句,满足仅仅用hibernate无法实现的sql构建。 protected String hqlToSql(String hql, or...

zkool ⋅ 2014/10/12 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

vbs 取文件大小 字节

dim namedim fs, s'name = Inputbox("姓名")'msgbox(name)set fs = wscript.createobject("scripting.filesystemobject") 'fs为FSO实例if (fs.folderexists("c:\temp"))......

vga ⋅ 今天 ⋅ 1

高并发之Nginx的限流

首先Nginx的版本号有要求,最低为1.11.5 如果低于这个版本,在Nginx的配置中 upstream web_app { server 到达Ip1:端口 max_conns=10; server 到达Ip2:端口 max_conns=10; } server { listen ...

算法之名 ⋅ 今天 ⋅ 0

Spring | IOC AOP 注解 简单使用

写在前面的话 很久没更新笔记了,有人会抱怨:小冯啊,你是不是在偷懒啊,没有学习了。老哥,真的冤枉:我觉得我自己很菜,还在努力学习呢,正在学习Vue.js做管理系统呢。即便这样,我还是不...

Wenyi_Feng ⋅ 今天 ⋅ 0

博客迁移到 https://www.jianshu.com/u/aa501451a235

博客迁移到 https://www.jianshu.com/u/aa501451a235 本博客不再更新

为为02 ⋅ 今天 ⋅ 0

win10怎么彻底关闭自动更新

win10自带的更新每天都很多,每一次下载都要占用大量网络,而且安装要等得时间也蛮久的。 工具/原料 Win10 方法/步骤 单击左下角开始菜单点击设置图标进入设置界面 在设置窗口中输入“服务”...

阿K1225 ⋅ 今天 ⋅ 0

Elasticsearch 6.3.0 SQL功能使用案例分享

The best elasticsearch highlevel java rest api-----bboss Elasticsearch 6.3.0 官方新推出的SQL检索插件非常不错,本文一个实际案例来介绍其使用方法。 1.代码中的sql检索 @Testpu...

bboss ⋅ 今天 ⋅ 0

informix数据库在linux中的安装以及用java/c/c++访问

一、安装前准备 安装JDK(略) 到IBM官网上下载informix软件:iif.12.10.FC9DE.linux-x86_64.tar放在某个大家都可以访问的目录比如:/mypkg,并解压到该目录下。 我也放到了百度云和天翼云上...

wangxuwei ⋅ 今天 ⋅ 0

PHP语言系统ZBLOG或许无法重现月光博客的闪耀历史[图]

最近在写博客,希望通过自己努力打造一个优秀的教育类主题博客,名动江湖,但是问题来了,现在写博客还有前途吗?面对强大的自媒体站点围剿,还有信心和可能型吗? 至于程序部分,我选择了P...

原创小博客 ⋅ 今天 ⋅ 0

IntelliJ IDEA 2018.1新特性

工欲善其事必先利其器,如果有一款IDE可以让你更高效地专注于开发以及源码阅读,为什么不试一试? 本文转载自:netty技术内幕 3月27日,jetbrains正式发布期待已久的IntelliJ IDEA 2018.1,再...

Romane ⋅ 今天 ⋅ 0

浅谈设计模式之工厂模式

工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻...

佛系程序猿灬 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部