文档章节

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
178
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使用小记

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

Only_小白
2016/05/10
178
0

没有更多内容

加载失败,请刷新页面

加载更多

sql 开窗函数

开窗函数:在开窗函数出现之前存在着很多用 SQL 语句很难解决的问题,很多都要通过复杂的相关子查询或者存储过程来完成。为了解决这些问题,在 2003 年 ISO SQL 标准加入了开窗函数,开窗函数...

hblt-j
15分钟前
0
0
使用Vue动态生成form表单的实例代码

具有数据收集、校验和提交功能的表单生成器,包含复选框、单选框、输入框、下拉选择框等元素以及,省市区三级联动,时间选择,日期选择,颜色选择,文件/图片上传功能,支持事件扩展。 欢迎大家s...

嫣然丫丫丫
22分钟前
0
0
NEO区块链-DAPP开发直通车-第零篇

什么是DAPP DAPP 是以太坊发明的词汇 Decentralized Application. 目前基于区块链技术开发的应用程序广泛的接受使用了这一名称。 NEL将为开发DAPP提供全面的服务 什么是NEL NEL是 “NewEcon...

NEO-FANS
26分钟前
1
0
可视化软件VisIt在Ubuntu18.04上的安装

可视化软件VisIt在Ubuntu18.04上的安装 参考文档及使用说明 1.下载 在官网下载页面下载合适版本的安装文件,Ubuntu有专用的 https://wci.llnl.gov/simulation/computer-codes/visit/executa...

佚文
32分钟前
1
0
selenium之表格的定位

真的勇士, 敢于直面惨淡的warning、 敢于正视淋漓的error 目录 被测试网页的HTML代码 1.遍历表格所有单元格 2.定位表格中的某个元素 3.定位表格中的子元素 总结 浏览器网页常常会包含各类表...

程序猿拿Q
47分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部