hql

Hibernate3查询返回Map探秘

给你一囗甜甜゛ 提交于 2020-04-09 19:22:49
-源于我对它的一个误会 sparta-紫杉 2010-4-14 9:02 开发环境: eclipse3.4.2 + weblogic10.3 + jdk1.6.0_13 + Struts2.1.8 + Spring3.0.1 + Hiberante3.3.2 初识Hibernate3的查询结果返回Map的功能是非常高兴的,因为我第一印象认为它能够解决类似以下的问题: 从角色表SysRoles中,得到以Role_Id(角色ID)为Key, 以Role_Desc(角色描述)为Value的Map。 要知道在以前,我通常采用如下的传统方式解决此类问题: public HashMap getRolesMap() { try { List<SysRoles> results = getHibernateTemplate().find("from SysRoles"); Map hashMap = new HashMap(0); for ( SysRoles role : results ){ hashMap.put( role.getRoleId(), role.getRoleDesc()); } return hashMap; } catch (RuntimeException re) { throw re; } } 代码虽也不多,短短5行代码,但在代码里面需要经过一次提取

Hive + HBase,用HQL查询HBase

本小妞迷上赌 提交于 2020-04-01 13:55:13
Hive整合HBase:数据实时写Hbase,实现在Hive中用sql查询 以下操作的 Hive版本:2.3.6 ,HBase版本:2.0.4 在HBase中创建表:t_hbase_stu_info create 't_hbase_stu_info','st1' 在Hive中创建外部表:t_hive_stu_info create external table t_hive_stu_info (id int,name string,age int,sex string) stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' with serdeproperties("hbase.columns.mapping"=":key,st1:name,st1:age,st1:sex") tblproperties("hbase.table.name"="t_hbase_stu_info"); 在Hbase中给t_hbase_stu_info插入数据 put 't_hbase_stu_info','1001','st1:name','zs' put 't_hbase_stu_info','1001','st1:age','23' put 't_hbase_stu_info','1001','st1:sex','man' put

NHibernate总结

南楼画角 提交于 2020-03-30 12:13:07
1.对象和关系数据是业务实体的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据。内存中的对象之间存在关联和继承关系,而在数据库中,关系数据无法直接表达多对多关联和继承关系。因此,对象-关系映射(ORM)系统一般以中间件的形式存在,主要实现程序对象到关系数据库数据的映射。 2.NHibernate 从数据库底层来持久化你的.Net 对象到关系型数据库。你的代码仅仅和对象关联,NHibernat 自动产生SQL语句,并确保对象提交到正确的表和字段中去。 3.常用对象:Configuration:配置文件和模型初始化;ISessionFactory:处理数据库所有操作;ISession:一次数据库操作;IStatelessSession:同ISession,差异是执行完操作马上关闭,不会有延迟加载数据;ITransaction:事务。 4.外连接抓取: 对一个特定关联来说,通过在XML映射文件中设置outer-join属性可以控制是否开启抓取功能。 设置hibernate.use_outer_join为false将禁用全局的外连接抓取,设置为true将启用所有一对一(one-to-one)和多对一(many to one)关联中的外连接抓取默认情况下,它被设置为auto,即自动外连接。但是,一对多关联和集合永远不会使用外连接抓取,除非对每个特定的管理进行明确声明

Hibernate关联关系配置(多对一,一对多)

半城伤御伤魂 提交于 2020-03-23 13:01:13
第一种关联关系:一对多(多对一) "一对多"是最普遍的映射关系,简单来讲就如员工与部门的关系。 一对多 :从部门的角度来说一个部门有多个员工,即为一对多。 多对一 :从员工的角度来说多个员工对应一个部门,即多对一。 多对一关系单向在hbm文件中的配置信息: Emp.hbm.xml中: <?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"> <!-- package:要映射的对象所在的包(可选,如果不指定,此文件下所有的类都要指定全路径) auto-import 默认为true,在写HQL的时候自动导入包名 如果指定为false,在写HQL的时候必须要写上类的全名-- > <hibernate-mapping package="cn.xsy.entity.day_manytoone"> <class name="Emp" table="Emp"> <id name="empno" column="empno"> <generator class="native"></generator> </id> <many-to-one

hibernate4 baseDao的封装

半腔热情 提交于 2020-03-21 01:14:21
1.BaseDao.java 基础类接口 package com.itv.launcher.util; import java.io.Serializable; import java.util.Collection; import java.util.List; /** * @ClassName: IBaseDao * @Description: Dao封装接口 * @author yz * @date 2014年6月16日17:05:17 */ public interface IBaseDao<T, ID extends Serializable> { /** * <保存实体> * <完整保存实体> * @param t 实体参数 */ public abstract void save(T t); /** * <保存或者更新实体> * @param t 实体 */ public abstract void saveOrUpdate(T t); /** * <load> * <加载实体的load方法> * @param id 实体的id * @return 查询出来的实体 */ public abstract T load(ID id); /** * <get> * <查找的get方法> * @param id 实体的id * @return 查询出来的实体 */

Hibernate增删查改语句

旧时模样 提交于 2020-03-21 01:13:12
我用的数据库是MySQL,实体类叫Product create table Product (   proId integer not null auto_increment,   proName varchar(50) not null,   proPrice float not null,   proCount integer not null,   proDesc varchar(250) not null,   primary key (proId) ) 1.Hibernate添加数据操作 Product product=new Product(); product.setProName("空调"); product.setProPrice("1888"); product.setProCount("50"); product.setProDesc("变频空调"); Transaction trans = session.beginTransaction(); session.save(product);trans.commit(); //任何有关数据库更新的操作都是commit后进数据库的 2.Hibernate删除数据操作 对象删除 Transaction trans = session.beginTransaction(); Product pro=new

Hibernate中HQL函数汇总及获取当前时间进行比较举例

若如初见. 提交于 2020-03-20 18:28:12
  在很多时候,我们负责的项目中,在数据访问层(DAO层)通常我们会使用sql语句或者hql语句,而在我们使用hql语句拼接时有时会报错,通常的原因是:我们使用了标准的sql语句,开启的确是hibernate的面向对象的语句 sessionFactory.getCurrentSession().createQuery(sql); 我们应改成 sessionFactory.getCurrentSession().createSQL(sql);就可以了。   但有时项目要求必须要使用hql,比如说将相应的接口都封装成了jar包,本人就遇到了这样的情况,在用hql语句比较当前时间时,一开始使用sql语句进行拼接,结果一直报错。在这里给大家展示一下Hql常用的函数吧:    函数名称 说明 类型 支持 使用方法 备注 ABS(n) 取绝对值 数学函数 JPAQL HQL ABS(column_name[数字类型对象属性]) SQRT(n) 取平方根 数学函数 JPAQL HQL SQRT(column_name[数字类型对象属性]) MOD(x,y) 取余数 数学函数 JPAQL HQL MOD([对象属性(数字)或值],[对象属性(数字)或值]) 数字必须是整型,返回参数1/参数2得的余数 SIZE(c) 方法集合内对象数量 集合函数 JPAQL HQL MINELEMENT(c)

HQL之动态分区调整

微笑、不失礼 提交于 2020-03-20 18:20:08
动态分区插入可以基于查询语句分出出要插入的分区名称。比如,下面向分区表插入数据的SQL: insert into table chavin.emp_pat partition(dname,loc) select e.empno,e.ename,e.job,e.mgr,e.hiredate,e.sal,e.comm,e.deptno,d.dname,d.loc from dept d join emp e on d.deptno=e.deptno; hive会根据select字段的最后两个字段确定分区字段的值(上面sql中即根据d.dname,d.loc的值确定partition(dname,loc)中dname和loc的值),分区字段值的确定是根据位置而不是根据内容确定的,这点尤其需要注意。当然,对于多分区表的插入,可以混合使用静态分区和动态分区的方法,并且静态分区字段必须出现在动态分区字段之前,如下: insert into table chavin.emp_pat partition(dname=' NEW YORK',loc) select e.empno,e.ename,e.job,e.mgr,e.hiredate,e.sal,e.comm,e.deptno,d.dname,d.loc from dept d join emp e on d.deptno=e.deptno

Hibernate各种查询操作(一)

十年热恋 提交于 2020-03-19 05:52:32
测试数据库如下 t_sort表: t_good表: 一、对象导航方式查询   查询所有食品类下面的食品   代码:    //对象导航查询 @Test public void Test1(){ SessionFactory sessionFactory = null; Session session = null; Transaction tx = null; try { sessionFactory = HibernateUtils.getFactory(); session = sessionFactory.openSession(); tx = session.beginTransaction(); //1、使用get方法查询出食品类 Sort food = session.get(Sort.class, 1); //2、使用sort对象的方法得到所有食品类中的食品 Set<Good> set = food.getSetGoods(); //3、遍历set集合 for (Good good : set) { System.out.println(good); } tx.commit(); } catch (Exception e) { tx.rollback(); }finally{ session.close(); sessionFactory.close(); } }  

Hibernate中HQL函数汇总及其说明

筅森魡賤 提交于 2020-03-13 13:03:26
Criteria查询对查询条件进行了面向对象封装,符合编程人员的思维方式,不过HQL(Hibernate Query Language)查询提供了更加丰富的和灵活的查询特性,因此Hibernate将HQL查询方式立为官方推荐的标准查询方式,HQL查询在涵盖Criteria查询的所有功能的前提下,提供了类似标准SQL语句的查询方式,同时也提供了更加面向对象的封装。以下就是HQL的一些常用函数,有了这些函数,我们就可以拥有更多的灵活性,比如HQL如何取余,HQL如何返回集合的最值,HQL字符串处理,HQL时间、日期处理等。 函数名称 说明 类型 支持 使用方法 备注 ABS(n) 取绝对值 数学函数 JPAQL HQL ABS(column_name[数字类型对象属性]) SQRT(n) 取平方根 数学函数 JPAQL HQL SQRT(column_name[数字类型对象属性]) MOD(x,y) 取余数 数学函数 JPAQL HQL MOD([对象属性(数字)或值],[对象属性(数字)或值]) 数字必须是整型,返回参数1/参数2得的余数 SIZE(c) 方法集合内对象数量 集合函数 JPAQL HQL MINELEMENT(c) 返回集合中最小元素 集合函数 HQL MAXELEMENT(c) 返回集合中最大元素 集合函数 HQL MININDEX(c) 返回索引集合最小索引