HQL笔记
- 格式:doc
- 大小:31.00 KB
- 文档页数:5
1. 查询整个映射对象所有字段//直接from查询出来的是一个映射对象,即:查询整个映射对象所有字段String hql = "from Users";Query query = session.createQuery(hql);List<Users> users = query.list();for(Users user : users){System.out.println(user.getName() + " : " + user.getPasswd() + " : " + user.getId());}输出结果为:name1 : password1 : 1name2 : password2 : 2name3 : password3 : 32.查询字段//查询其中几个字段String hql = " select name,passwd from Users";Query query = session.createQuery(hql);//默认查询出来的list里存放的是一个Object数组List<Object[]> list = query.list();for(Object[] object : list){String name = (String)object[0];String passwd = (String)object[1];System.out.println(name + " : " + passwd);}输出结果为:name1 : password1name2 : password2name3 : password33.修改默认查询结果(query.list())不以Object[]数组形式返回,以List形式返回//查询其中几个字段,添加new list(),注意list里的l是小写的。
Hibernate笔记HQL查询(一)单属性,多属性查询HQL是Hiberante官方推荐的Hibernate检索方式,它使用类似SQL的查询语言,以面向对象的方式从数据库中查询。
可以使用HQL 查询具有继承、多态和关联关系的数据。
在检索数据时应优先考虑使用HQL方式。
本笔记将会沿用前面所使用的dept部门表,emp员工表。
dept部门表emp员工表1 查询实体hibernate的session.createQuery()方法是使用HQL语句查询对象的。
hql:是查询对象的,例如:"from User",其中from不区分大小写,而User是区分大小写,因为它是对象。
是User类返回Query对象。
执行这条语句后,Hibernate会根据配置文件中所配置的数据库适配器自动生成相应数据库的SQL语句。
sql: select * from dept; from 后面是表名hql: form Dept; from 后面是类。
可以对类起别名,有两种方法。
hql: from Dept dhql:from Dept as d以上两种起别名方法皆可。
public void Test1() throws Exception{Configuration config=new Configuration().configure();SessionFactory sessionFactory= config.buildSessionFactory();Session session=null;Transaction tr=null;try{session= sessionFactory.openSession();tr=session.beginTransaction();String hql="from Dept"; //定义String类型hql,写入hql语句。
Query query=session.createQuery(hql);List<Dept> list = query.list();for(Dept dept:list){System.out.print("部门编号: "+dept.getDid() +" ");System.out.println("部门名称: "+dept.getDname());}mit();}catch(Exception e){tr.rollback();}finally{if(session!=null){session.close();}if(sessionFactory!=null){sessionFactory.close();}}}执行结果Hibernate: select dept0_.did as did1_, dept0_.dname as dname1_, dept0_.daddress as daddress1_ from dept dept0_ 部门编号: 1 部门名称:业务部部门编号: 2 部门名称:技术部部门编号: 3 部门名称:管理部部门编号: 4 部门名称:财务部部门编号: 5 部门名称:人力资源部2 查询表中单个属性sql: select ename from depthql: select ename from Dept对属性也可以设置别名hql:select ename as from Deptas 必须加。
上次我们一起学习了用Criteria进行相关的操作,但由于Criteria并不是Hibernate官方推荐的查询方式,我们也并不多用。
现在我们来看一下官方推荐的HQL,一起学习一下它的强大。
说是HQL,也就是Hibernate查询语句,和SQL有什么区别呢?一个字母的区别,哈哈。
当然不是这样,HQL和SQL的区别在于思想的不同,HQL是用面向对象的方向进行查询,而SQL则是对数据库二维表进行查询,这里包含的是思想的不同。
HQL实际上也是SQL,它由Hibernate帮我们在内部进行转换,生成SQL。
1)废话不多说,我们直接看一下它的强大。
Java代码1.from User这个代码很熟悉吧,因为我们在SQL中经常也用到from 表名,但这里有点不同的是User在这里并不是表名,而是实体类的名称,由hibernate帮我们进行映射。
联想SQL语句,如果我们想查出某个属性,并且根据某个属性进行条件限制,很简单可以得到类似语句:Java代码1.select ,usr.age from User where usr.age > 20 and usr.age < 60这样我们就查出了年龄大于20且小于60的User的姓名和年龄。
很容易理解。
SQL语句中的and,or,like,<,>,=等都可以在HQL中进行使用。
需要注意的是当我们查询多个属性时,返回的结果是一个Object[]数组,而只有单个时是返回Object,这个需要不同的解析方式,所以在查询时需要注意。
2)当然,我们前面说了HQL是面向对象的,而我们这样做,就不是面向对象的思想了。
我们来改一下:Java代码1.select new User(,usr.age) from User usr where usr.age >20这样我们就把查询到的结果放到了User对象中,注意,这里调用的是User 的构造函数,User类中必须存在接收两个参数的User构造函数,否则会报错,错误信息大概如下:Java代码1.Unable to locate appropriate constructor on class [org.hibernater]它找不到合适的构造函数。
hibernatehql语句详解Hibernate HQL语句详解1. 什么是Hibernate HQL语句?Hibernate HQL(Hibernate Query Language)是Hibernate框架提供的一种面向对象的查询语言。
它类似于SQL,但是更注重于面向对象的概念和操作。
2. HQL语句的基本语法•HQL语句以FROM关键字开始,后面跟着要查询的实体类名。
•可以使用SELECT关键字来选择要查询的属性。
•可以使用WHERE关键字来添加查询条件。
•可以使用JOIN关键字来进行表连接查询。
•可以使用ORDER BY关键字来排序查询结果。
•可以使用GROUP BY关键字来进行分组查询。
3. HQL中的参数绑定•HQL语句中可以使用占位符(?)来表示参数,然后使用setXxx 方法来为占位符绑定实际的值。
•也可以使用命名参数(:name)来表示参数,然后使用setParameter方法来为参数绑定实际的值。
4. HQL中的函数HQL支持多种函数,常用的函数有:•数字函数:abs、sqrt、mod等。
•字符串函数:length、concat、substring等。
•日期函数:year、month、day等。
5. HQL中的聚合函数HQL中支持多种聚合函数,常用的聚合函数有:•avg:计算平均值。
•sum:计算总和。
•max:获取最大值。
•min:获取最小值。
•count:计算记录数。
6. HQL中的子查询•子查询是指一个查询语句内包含另一个查询语句。
•子查询可以用在WHERE子句中的条件表达式中。
•HQL支持分页查询,可以使用setFirstResult和setMaxResults方法来实现分页。
•setFirstResult用于设置查询结果的起始位置。
•setMaxResults用于设置查询结果的最大数量。
8. HQL中的更新和删除操作•HQL不仅可以用于查询,还可以用于更新和删除操作。
Hibernate 中的HQL查询的总结一.Spring+Hibernate 中1.保存一个实体getHibernateTemplate().save(user);2.根据id号从数据库中查询到一个实体Useruser=(User)getHibernateTemplate().load(User.class,fromUse rId));3.删除一个实体方法一:直接删除getHibernateTemplate().delete((Message);方法二:嵌套一个根据id号查询到一个实体,再删除getHibernateTemplate().delete((Message)getHibernateTempla te().load(Message.class, msgId));4.查询符合添加的记录的个数,函数count(*)Object obj = getSession().createQuery("select count(*)from Message where recepUser.id="+recepUserId+" and msgType=1").uniqueResult();//表示只返回一个结果5.修改一个实体getHibernateTemplate().update(message);6.设定查询记录的起始位置和得到的记录数List<Message> list = getSession().createQuery("from Message where (fromUser.id="+userId+" or recepUser.id="+userId+") and msgType=2 order by id desc").setMaxResults(想要得到的记录数).setFirstResult(取得记录的起点).list();7. intValue()返回的结果是整数int msgCount=((Long)getSession().createQuery("select count(*) from Message where from User.id="+userId+" or recepUser.id="+userId).uniqueResult()).intValue();二.只有Hibernate 中1.保存数据/*** 保存数据** @param t传入的泛型* @return*/public boolean save(T t) {session = HibernateUtil.getSession();try {session.beginTransaction();session.save(t);session.getTransaction().commit();} catch (Exception e) {e.printStackTrace();session.getTransaction().rollback();return false;} finally {HibernateUtil.closeSession(session);}return true;}2.删除数据/*** 删除数据** @param t传入的泛型* @return*/public boolean delete(T t) {session = HibernateUtil.getSession();try {session.beginTransaction();session.delete(t);session.getTransaction().commit();} catch (Exception e) {e.printStackTrace();session.getTransaction().rollback();return false;} finally {HibernateUtil.closeSession(session);}return true;}3.修改数据/*** 修改数据** @param t传入的泛型* @return*/public boolean update(T t) {session = HibernateUtil.getSession();try {session.beginTransaction();session.update(t);session.getTransaction().commit();} catch (Exception e) {e.printStackTrace();session.getTransaction().rollback();return false;} finally {HibernateUtil.closeSession(session);}return true;}4.查询单条数据,返回查询得到的唯一的结果实体对象/*** 查询单条数据** @param hql* @return返回查询得到的唯一的结果实体对象*/public T queryFrom(String hql) {// T表示泛型对象,T泛型定义T t = null;// 引用实体对象session = HibernateUtil.getSession();try {session.beginTransaction();Query query = session.createQuery(hql);// 执行传递来的hql查询語句t = (T) query.uniqueResult();// 将查询结果转换为实体对象session.getTransaction().commit();} catch (Exception e) {e.printStackTrace();session.getTransaction().rollback();} finally {HibernateUtil.closeSession(session);}return t;// 返回查询得到的实体对象}5.通过泛型定义的查询多条语句方法/*** 通过泛型定义的查询多条语句方法** @param hql** @return 查询得到的结果集List*/public List<T> queryList(String hql) {session = HibernateUtil.getSession();List<T> list = null;try {session.beginTransaction();Query query = session.createQuery(hql);// 执行传递来的hql查询语句list = query.list();// 将查询返回的结果集转换成List集合session.getTransaction().commit();} catch (Exception e) {e.printStackTrace();session.getTransaction().rollback();} finally {HibernateUtil.closeSession(session);}return list;// 返回查询得到的集合对象}6. 返回指定条数的查询结果的方法/*** 返回指定条数的查询结果的方法** @param hql* @param showNumber所要查询的数据的结果的条数* @return返回查询得到的集合对象*/public List<T> queryTypeListNumber(String hql, int showNumber,Type type) {session = HibernateUtil.getSession();List<T> list = null;try {session.beginTransaction();Query query = session.createQuery(hql);// 执行传递来的hql查询语句// for(int i=0;i<params.length;i++){//把传递过来的参数数组遍历出来,遍历赋值给hql语句中的未知待定数据// query=query.setParameter(i, params[i]);// }query=query.setParameter(0, type);query.setMaxResults(showNumber);// 设这所要查询的数据的结果的条数list = query.list();// 将查询返回的结果集转换成List集合session.getTransaction().commit();} catch (Exception e) {e.printStackTrace();session.getTransaction().rollback();} finally {HibernateUtil.closeSession(session);}return list;// 返回查询得到的集合集合对象}7.查询所有用户信息String hql = "from User";list = session.createQuery(hql) //创建Query对象 .list();8.保存用户session.save(user);9.通过用户名和密码查询用户(参数不一定,用动态赋值)//HQL查询语句String hql = "from User u where ername=? and u.password=?";Query query = session.createQuery(hql) //创建Query对象.setParameter(0, username)//动态赋值.setParameter(1, password);//动态赋值10.判断指定用户名的用户是否存在//HQL查询语句String hql = "from User u where ername=?";Query query = session.createQuery(hql) //创建Query对象.setParameter(0, username);//动态赋值Object user = query.uniqueResult();//返回User对象//如果用户存在exist为trueif(user != null){exist = true;}11.根据id删除一条留言信息//加载指定id的留言信息Message message = (Message)session.get(Message.class, id);session.delete(message); //删除留言12.查询所有文章中都有哪些作者(Group By)hql = "select author from ArticleInfo group by author";//查询文章详细信息的hql语句List authorList = objectDao.queryListObject(hql);//执行查询request.setAttribute("authorList", authorList);13.分组查询,各部门名称和各部门的人数(Group By)hql="select u.dept,count(*) from User u group by u.dept";Query query=session.creatQuery(hql);List<Object[]> list=query.list();//object[]是数组,可以同时多个属性查询obj[o],obj[1],obj[2],,,,//for循环输出信息For(object[] obj;list){Sysout.("部门"+obj[0]);Sysout.("人数"+obj[1])}14.查询文章的回复// 文章回复内容的详细查询hql = "from ReArticleInfo where re_id=" + id + " order by id desc";//查询文章详细内容的hql语句ObjectDao<ReArticleInfo> re_objectDao = new ObjectDao<ReArticleInfo>();//实例化持久化类List<ReArticleInfo> list = null;//定义List集合15.In的条件嵌套查询(双重条件,条件在其他表中)跨表hql_article_commend = "from ArticleInfo where commend='是' and author in (select account from UserInfo where freeze='解冻')";hql_article_vistor = "from ArticleInfo where author in (select account from UserInfo where freeze='解冻') order by visit desc";16.多对一映射在user表中,通过Author对象查询userString hql="from Category c wherec.typeName='"+category.getTypeName()+"'andc.author='"+category.getAuthor().getId()+"'";。
HQL语句详解4.3 使用HQL查询Hibernate提供了异常强大的查询体系,使用Hibernate有多种查询方式。
可以选择使用Hibernate的HQL查询,或者使用条件查询,甚至可以使用原生的SQL查询语句,此外还提供了一种数据过滤功能,这些都可用于筛选目标数据。
下面分别介绍Hibernate的4种数据筛选方法:4.3.1 HQL查询HQL是Hibernate Query Language的缩写,HQL的语法很像SQL的语法,但HQL是一种面向对象的查询语言。
因此,SQL的操作对象是数据表和列等数据对象,而HQL的操作对象是类、实例、属性等。
HQL是完全面向对象的查询语言,因此可以支持继承和多态等特征。
HQL查询依赖于Query类,每个Query实例对应一个查询对象。
使用HQL查询可按如下步骤进行:(1)获取Hibernate Session对象;(2)编写HQL语句;(3)以HQL语句作为参数,调用Session的createQuery方法创建查询对象;(4)如果HQL语句包含参数,调用Query的setXxx方法为参数赋值;(5)调用Query对象的list等方法遍历查询结果。
看下面的查询示例:public class HqlQuery{public static void main(String[] args)throws Exception{HqlQuery mgr = new HqlQuery();//调用查询方法mgr.findPersons();//调用第二个查询方法mgr.findPersonsByHappenDate();HibernateUtil.sessionFactory.close();}//第一个查询方法private void findPersons(){//获得Hibernate SessionSession sess = HibernateUtil.currentSession();//开始事务Transaction tx = sess.beginTransaction();//以HQL语句创建Query对象.//执行setString方法为HQL语句的参数赋值//Query调用list方法访问查询的全部实例List pl = sess.createQuery("from Person p where p.myEvents.title= :eventTitle").setString("eventTitle","很普通事情").list();//遍历查询的全部结果for (Iterator pit = pl.iterator() ; pit.hasNext(); ){Person p = ( Person )pit.next();System.out.println(p.getName());}//提交事务mit();HibernateUtil.closeSession();//第二个查询方法private void findPersonsByHappenDate()throws Exception{//获得Hibernate Session对象Session sess = HibernateUtil.currentSession();Transaction tx = sess.beginTransaction();//解析出Date对象SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Date start = sdf.parse("2005-01-01");System.out.println("系统开始通过日期查找人" + start);//通过Session的createQuery方法创建Query对象//设置参数//返回结果集List pl = sess.createQuery("from Person p where p.myEvents.happenDate between :firstDateand :endDate").setDate("firstDate",start).setDate("endDate",new Date()).list();//遍历结果集for (Iterator pit = pl.iterator() ; pit.hasNext(); ){Person p = ( Person )pit.next();System.out.println(p.getName());}mit();HibernateUtil.closeSession();}通过上面的示例程序,可看出查询步骤基本相似。
HQL语法HQL:Hibernate Query LanguageHQL是完全⾯向对象的查询语⾔,因此可以⽀持继承和多态等特征。
$下⾯介绍HQL语句的语法1.from⼦句from Person表明从Person持久化类中选出全部的实例。
推荐:from Person as p2.select⼦句select from Person as pselect .firstName from Person as pselect new list(, p.address) from Person as pselect new ClassTest(, p.address) from Person as p (有前提)select as personName from Person as pselect new map( as personName) from Person as p (与new map()结合更普遍) 3.聚集函数avg,count,max,min,sumselect count(*) from Personselect max(p.age) from Person as pselect || "" || p.address from Person as p4.多态查询from Person as pfrom ng.Object ofrom Named as n5.where⼦句from Person where name like "tom%"from Person as p where like "tom%"from Cat cat where like "kit%"select * from cat_table as table1 cat_table as table2 where table1.mate =table2.id and like "kit%"from Foo foo where foo.bar.baz.customer.address.city like "fuzhou%"from Cat cat, Cat rival where cat.mate = rival.mateselect cat, matefrom Cat cat, Cat matewhere cat.mate = matefrom Cat as cat where cat.id = 123from Cat as cat where cat.mate.id = 69from Person as personwhere person.id.country = ''AU''and person.id.medicareNumber = 123456from Account as accountwhere account.owner.id.country = ''AU''and account.owner.id.medicareNumber = 123456from Cat cat where cat.class = DomesticCatfrom Account as a where .firstName like "dd%" // 正确from Account as a where like "dd%" // 错误6.表达式from DomesticCat cat where between ''A'' and ''B''from DomesticCat cat where in (''Foo'', ''Bar'', ''Baz'')from DomesticCat cat where not between ''A'' and ''B''from DomesticCat cat where not in (''Foo'', ''Bar'', ''Baz'')from DomesticCat cat where is nullfrom Person as p where p.address is not null<property name="hibernate.query.substitutions">true 1, false 0</property>from Cat cat where cat.alive = truefrom Cat cat where cat.kittens.size > 0from Cat cat where size(cat.kittens) > 0from Calendar cal where maxelement(cal.holidays) > current datefrom Order order where maxindex(order.items) > 100from Order order where minelement(order.items) > 10000//操作集合元素select mother from Cat as mother, Cat as kitwhere kit in elements(foo.kittens) //p的name属性等于集合中某个元素的name属性select p from NameList list, Person pwhere = some elements(s) //操作集合元素from Cat cat where exists elements(cat.kittens)from Player p where 3 > all elements(p.scores)from Show show where ''fizard'' in indices(show.acts)//items是有序集合属性,items[0]代表第⼀个元素from Order order where order.items[0].id = 1234 //holidays是map集合属性,holidays[national day]是代表其中第⼀个元素select person from Person person, Calendar calendarwhere calendar.holidays[''national day''] = person.birthDayand person.nationality.calendar = calendar //下⾯同时使⽤list集合和map集合属性select item from Item item, Order orderwhere order.items[order.deliveredItemIndices[0]] = item and order.id = 11select item from Item item, Order orderwhere order.items[maxindex(order.items)] = item and order.id = 11select item from Item item, Order orderwhere order.items[size(order.items) - 1] = itemselect custfrom Product prod,Store storeinner join store.customers custwhere = ''widget''and in [''Melbourne'', ''Sydney'']and prod = all elements(cust.currentOrder.lineItems)SELECT , cust.address, cust.phone, cust.id, cust.current_orderFROM customers cust,stores store,locations loc,store_customers sc,product prodWHERE = ''widget''AND store.loc_id = loc.idAND IN (''Melbourne'', ''Sydney'')AND sc.store_id = store.idAND sc.cust_id = cust.idAND prod.id = ALL(SELECT item.prod_idFROM line_items item, orders oWHERE item.order_id = o.idAND cust.current_order = o.id)7.order by⼦句from Person as porder by , p.agefrom Person as porder by asc, p.age desc8.group by⼦句select cat.color, sum(cat.weight), count(cat)from Cat catgroup by cat.color //select后出现的id处出现在group by之后,⽽name属性则出现在聚集函数中select foo.id, avg(name), max(name)from Foo foo join s namegroup by foo.idselect cat.color, sum(cat.weight), count(cat)from Cat catgroup by cat.colorhaving cat.color in (eg.Color.TABBY, eg.Color.BLACK)select catfrom Cat catjoin cat.kittens kittengroup by cathaving avg(kitten.weight) > 100order by count(kitten) asc, sum(kitten.weight) desc9.⼦查询from Cat as fatcatwhere fatcat.weight > (select avg(cat.weight) from DomesticCat cat)from Cat as catwhere not (, cat.color) in (select , cat.color from DomesticCat cat)10.fetch关键字from Person as p join p.scoresfrom Document fetch all properties order by namefrom Document doc fetch all properties where lower() like ''%cat%''。
HQL 参数绑定:JDBC 中 :PrepareStatement pre=connection.prepare(“select * from User where =?”);pre.setString(1,”zhaoxin”);ResultSet rs=pre.executeQuery();:如果在 hibernate 中调用 JDBC:trans = session.beginTransaction();Connection conn = session.connection();PreparedStatement stmt = conn.prepareStatement(sql);stmt.executeUpdate();stmt.execute();mit();hibernate 中:A):按照参数名称绑定:// 可以级联的去写Query query = session.createQuery("from User u where = :userName");query.setString("userName","秦强强");//("命名参数名称",命名参数实际的值) // :userName 定义了命名参数,相当于 =?, 然后设置 ? 的值 //B):按照参数位置绑定: // 不提倡可读性差Query query=session.createQuery(“from User user where =? and user.age =? ”);query.setString(0,name);//按照 ? 的位置设置实际的参数query.setInteger(1,age);C):setParameter() 方法://可以绑定任意类型的参数 //推荐String hql=”from User user where =:userName ”;Query query=session.createQuery(hql);query.setParameter(“customername”,name,Hibernate.STRING);//命名参数名称, 命名参数实际值, 命名参数映射类型 ,//对于一些基本类型, hibernate 可以猜测出参数映射类型, 但是Date类型不可以,//应为它会对应hibernate的多种映射类型, 像是Hibernate.DATE, Hibernate.TIMESTAMPD):setProperties() {注意 ies 复数 }方法: //setEntity();将命名参数的值和一个对象的属性值绑定Customer customer=new Customer();customer.setName(“pansl”);customer.setAge(80);Query query=session.createQuery(“from Customer c where =:name and c.age=:age ”);query.setProperties(customer);setProperties()方法会自动将customer对象实例的属性值匹配到命名参数上,但是要求命名参数名称必须要与实体对象相应的属性同名。
HLSL学习笔记(一):基础前言五一在家无事,于是学习了一下HLSL,基于XAN4.0的。
学习完了也就总结一下,纯粹是新手学习的经验之谈,纰漏之处还望见谅,不喜勿喷。
HLSL是一种使用GPU渲染出图像的技术,不仅可以改变最终呈现的颜色,还可以物体的大小、胖瘦和位置等。
例如物体的碎裂效果就可以使用HLSL来渲染得到。
数据类型数据类型有值类型、向量、矩阵、采样器、和结构体。
1.值类型bool 布尔变量half 16为整形int 32位整形float 单精度浮点数double 双精度浮点数声明方式:float f;赋值方式:f = 1;2.向量声明方式:float4 f;赋值方式:f = {1,2,3,4};取值方式:float3 ff = f.rgb;说明:向可以通过xyzw或者rgba访问向量中的指定字段,x或者r就是代表0号字段。
不仅可以单独操作一个字段,还可以对多个字段同时操作,例如3*f.xyz,就是将f中的xyz都乘以个3。
3.矩阵声明方式:float2x4 f; 先行后列。
赋值方式:f = {1,1,2,2,3,3,4,4};取值方式:float ff = f[0][0];说明:如果要对矩阵做乘法运算,请使用mul函数,另外,mul(ff,f)与mul(f,ff)的结果是不一样的。
4.采样器声明方式:texture Texture; //纹理变量sampler TextureSampler = sampler_state //纹理采样器{Texture = <Texture>; //纹理采样器使用的纹理对象MinFilter = Linear; //缩小图形使用线性滤波MagFilter = Linear; //放大图形使用线性滤波MipFilter = Linear; //Mipmap使用线性滤波AddressU = Wrap; //U方向上的纹理寻址模式采用Wrap方式AddressV = Wrap; //V方向上的纹理寻址模式采用Wrap方式};赋值方式:在C#中对Texture赋值,effect.Parameters["Texture"].SetValue(Game.Content.Load<Texture2D>("*"));取值方式:tex2D(TextureSampler, TEXCOORD0);说明:MinFilter、MagFilter、MipFilter、AddressU、AddressV是可选项,如果不写将会使用默认值,也就是上面赋予的值。
1.hql更新String hql = "update PhUser set realName=?";int row=this.getSession().createQuery(hql).setString(0, "小李想").executeUpdate();PhUser 类名2.hql删除String hql = "delete PhUser a where erId=2";int row=this.getSession().createQuery(hql).executeUpdate();还有个这种的格式:final String hql = "delete PhRoleFunction as a where a.roleId = "+ roleId;this.getHibernateTemplate().execute(new HibernateCallback() {public Object doInHibernate(Session session)throws HibernateException, SQLException {return session.createQuery(hql).executeUpdate();}});更新也可以写成这样的格式3.hql单表查询String hql = "from PhUser a where erId=" + userId;List list = this.getHibernateTemplate().find(hql);4.hql多表查询(1)String hql = "select new map(a.CUId as CUId,a.unitName as unitName,b.CUFId as CUFId,b.UFName as UFName) from PhCorrelativeUnit a,PhCorrelativeUnitFunction b where a.CUId=b.CUId";List list = this.getHibernateTemplate().find(hql);多个表的字段放到map中,map的键值就是as后面的别名,如果没有as就是字段名(2) String hql = "select new com.phantom.appeal.action.bean.DealPaper(a.id as id,a.billId as billId,a.state as state,a.creator as creator,a.createtime as createtime ,b.eventContent as eventContent ,c.realName as realName,b.billCode as billCode,b.citName as citName ) from PhDealBill a,PhAcceptBill b,PhUser c where a.departmentId="+ billid+ " and a.state=0 and a.billId=b.billId and a.creator =erId order by a.billId";return this.getHibernateTemplate().find(hql);另外就是写一个类,对应你要查询的字段,这里的类名是new com.phantom.appeal.action.bean.DealPaper,里面对应查询的字段名5.得到记录数String hql = "select count(*) from PhUser";List list = this.getHibernateTemplate().find(hql);return ((Long) list.get(0)).intValue();<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN""/dtd/spring-beans.dtd"><beans><bean id="propertyConfig"class="org.springframework.beans.factory.config.Pr opertyPlaceholderConfigurer"><property name="locations"><list><value>classpath:system.properties</va lue></list></property></bean><!--JNDI DataSource for J2EE environments --><bean id="dataSource"class="boPooledDataSource"destroy-method="close"><property name="driverClass"value="${db.driverClassName}"/><property name="jdbcUrl" value="${db.url}"/><property name="user" value="${ername}"/><property name="password" value="${db.password}"/><!--C3P0 configuration --><property name="autoCommitOnClose" value="true"/><property name="checkoutTimeout"value="${cpool.checkoutTimeout}"/><property name="initialPoolSize"value="${cpool.minPoolSize}"/><property name="minPoolSize"value="${cpool.minPoolSize}"/><property name="maxPoolSize"value="${cpool.maxPoolSize}"/><property name="maxIdleTime"value="${cpool.maxIdleTime}"/><property name="acquireIncrement"value="${cpool.acquireIncrement}"/><property name="maxIdleTimeExcessConnections"value="${cpool.maxIdleTimeExcessConnections}"/></bean><bean id="baseService" lazy-init="true"class="org.springframework.transaction.interceptor.TransactionPr oxyFactoryBean"abstract="true"><property name="transactionManager"><ref bean="transactionManager" /></property><property name="transactionAttributes"><props><prop key="exec*">PROPAGATION_REQUIRED</prop><prop key="create*">PROPAGATION_REQUIRED</prop><prop key="update*">PROPAGATION_REQUIRED</prop><prop key="save*">PROPAGATION_REQUIRED</prop><prop key="add*">PROPAGATION_REQUIRED</prop><prop key="del*">PROPAGATION_REQUIRED</prop><prop key="remove*">PROPAGATION_REQUIRED</prop><prop key="insert*">PROPAGATION_REQUIRED</prop><prop key="*">PROPAGATION_REQUIRED</prop></props></property></bean><bean id="messageSource"class="org.springframework.context.support.ReloadableResourceBundleMe ssageSource"><property name="basenames"><list><value>classpath:GlobalMessage</value></list></property></bean><bean id="lobHandler"class="org.springframework.jdbc.support.lob.DefaultLobHandler"lazy-init="true"></bean><!-- SessionFactory --><bean id="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBea n"abstract="false" singleton="true" lazy-init="default"autowire="default" dependency-check="default"><property name="dataSource" ><ref bean="dataSource"/></property><property name="lobHandler"><ref local="lobHandler" /></property><property name="mappingDirectoryLocations"><list><value>classpath:com/hmmarket/entity</value></list></property><property name="hibernateProperties"><props><prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop><prop key="hibernate.show_sql">true</prop><propkey="hibernate.format_sql">true</prop></props></property></bean><!-- TransactionManager --><bean id="transactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionMa nager"><property name="sessionFactory"><ref local="sessionFactory" /></property></bean><bean id="sqlMapClient"class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"><property name="dataSource" ref="dataSource"/><property name="configLocation"value="classpath:sqlmap/sql-map-config.xml"/></bean><bean id="baseDao"class="com.hmmarket.framework.base.dao.impl.BaseDaoImpl"><property name="sessionFactory" ref="sessionFactory"/><property name="sqlMapClient" ref="sqlMapClient"/> </bean><bean id="tagDao"class="mon.tag.hibernate.TagDa oHibernate"autowire="byName"/><bean id="tagManager" parent="baseService" singleton="false"> <property name="target"><beanclass="mon.tag.impl.TagManagerImpl"autowire="byName" /></property></bean><!--start config batch job--><bean name="hmBatchJob"class="com.hmmarket.service.batchjob.HMBatchJob" singleton="false"autowire="byName"/><bean name="hmBatchFeeInfo"class="org.springframework.scheduling.quartz.MethodInvokingJobDetailF actoryBean"><property name="targetObject" ref="hmBatchJob"/><property name="targetMethod" value="execAllBatchJob"/><property name="concurrent" value="false"/> </bean><bean id="cronTrigger"class="org.springframework.scheduling.quartz.CronTriggerBean"><property name="jobDetail" ref="hmBatchFeeInfo"/><property name="cronExpression" value="0 0 0 ? *MON-FRI"/></bean><bean id="seheduler"class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"><list><ref bean="cronTrigger"/></list></property></bean><!--end config batch job--></beans>。