`

Hibernate 应用总结

阅读更多

一.查询
   Session s=HibernateSessionFactory.getSession();
   Transaction tra=s.beginTransaction();
   Query q=s.createQuery("from Company where name=:name");
   q.setParameter("name","baobao");
1.HQL查询
   from Company c   //Company是映射类而不是表表名,c:是别名。查找对应表所有的记录
                   //不能写成from * from Company c
2.传统SQL方式查询   from Company c where c.name='baobao' //SQL方式查询
3.占位符(?)式查询 参数索引以0开始,而Jdbc的PrepareStatement是以1开始
   Query q=session.createQuery("from Company c where c.name=? and c.id=?");
   q.setParameter(0,"baobao");
   q.setParameter(1,5);
   List l=q.list();       //查询条件name=baobao and id=5的记录
4.命名参数赋值(推荐) 如 :name
   Query q=s.createQuery("from Company c where c.name = :name and c.id = :id");
   q.setParameter("name","baobao");
   q.setParameter("id",5);
   List l=q.list();   //查询条件name=baobao and id=5的记录
5.命名查询方式:主要是将HQL放在相应类的映射文件中
   如:在Company.hbm.xml文件中在<class></class>外面加入
   <query name="Company.byname">
       <![CDATA[FROM Company c WHERE c.name= :name and c.id= :id]]>
   </query>
   然后在JAVA文件中
   Query q=s.getNamedQuery("Company.byname");
   q.setParameter("name","baobao");
   q.setParameter("id",5);
   List l=q.list();
6.连接查询(多表查询)
   from Company c join c.departments d where c.id=5 and d.name=''[=c.departments.name] order by time desc
   //==select * from company inner join departments on company.departmetns_id=departmetns.id
   //[inner] join 不满足条件的对象被过滤
   //left join 返回连接左边的对象,右边即使没有匹配的对象也将返回
   //right join 返回连接右边的对象,左边即使没有匹配的对象也将返回

7.in查询

String hql="FROM A WHERE A.ID IN (:alist)"; 
Query query = getSession().createQuery(hql); 
query.setParameterList("alist", a);

二.更新
1.更新操作update
Query q=s.createQuery("update CourseMonney set score= :score where studentId= :stuId and courseId= :teaId");
         q.setParameter("stuId","20070113");//注意:参数类型必须与字段类型一致
         q.setParameter("teaId",12);
         q.setParameter("score",addscoreForm.getScore());
         q.executeUpdate();
   //相当于"update coursemonney set score=12 where studentid='20070113 and courseid=12'"
三.删除
1.Query q=s.createQuery("delete CourseMonney as c where studentId= :stuId and courseId= :teaId");
         q.setParameter("stuId","20070113");//注意:参数类型必须与字段类型一致
         q.setParameter("teaId",12);
         q.executeUpdate();
   //相当于"delete from coursemonney where studentid='20070113 and courseid=12'"

2.使用HQL语句,动态参数

List<String> list = Arrays.asList(ids.split(","));
        String hql = "delete from Contract_Site where contract.id in(:cid)";
        Query q = super.createQuery(hql);
        q.setParameterList("cid", list);// 注意:参数类型必须与字段类型一致
        q.executeUpdate();

hibernate会根据list数量生成SQL:delete from table where id in (?,?...);

分享到:
评论

相关推荐

    hibernate重点总结(doc)

    一、应用程序的分层结构 二、hibernate数据持久化组件 三、持久化类 四、把持久化类映射到表 五、持久化对象(Persistent Object) 六、Hibernate中实体关系的处理 七、Hibernate知识点总结 八、Hibernate控制的事务

    Hibernate工作中应用的总结.doc

    Hibernate在工作中应用的总结,贡献给大家,希望大家共同提高

    浅析java程序中hibernate的应用总结

    hibernate可以理解为是一个中间件它负责把java程序的sql语句接收过来发送到数据库,而数据库返回来的信息hibernate接收之后直接生成一个对象传给java

    hibernate 总结

    学习hibernate的一些总结,包括一些比较新的应用技术,帮助初学者快速上手,有助于提高效率

    有关java中hibernate的用法及其应用的总结,用于初学者的入门教程.zip

    有关java中hibernate的用法及其应用的总结,用于初学者的入门教程.zip

    Spring 2.0 + Struts 1.2 + Hibernate 3.2 + DWR 2.0 的JavaEE应用示例

    总结,该例示注释非常详细,演示Spring托管Hibernate和Struts的Action, 以及Spring的事务声明(包括1.x与2.x的用法)与非事务声明的使用方式。 使用DWR可以方便的使用Spring托管的持久层功能。 目的:希望广大Java...

    hibernate总结

    持久化类的对象,在hibernate应用中可以处于三种状态(根据对象和session之间的关系进行划分): 1. 临时态,瞬态:特点: a) 在数据库中没有记录和它对应 b) 和session没有任何关系 c) New 出来的对象,都处于临时...

    MyEclipse Hibernate 快速入门(电子书)

    我们将全程带领你来开发一个非常简单的 Java Hibernate 应用. 对于这个教程没有包含到的问题和概念, 我们推荐你去参考 资源 部分列出的 Hibernate 资源. 这个文档展示了如何进行下列工作: 1.为 Java 项目添加 ...

    Spring+Hibernate+MySql的应用实例

    实现了Spring+Hibernate+MySql的融合,通过部分修改调整,可以直接运行.本人亲自测试过,总结和不能运行原因已归纳在文件中

    Hibernate+中文文档

    1.2. 第一部分 - 第一个Hibernate应用程序 1.2.1. 第一个class 1.2.2. 映射文件 1.2.3. Hibernate配置 1.2.4. 用Ant构建 1.2.5. 启动和辅助类 1.2.6. 加载并存储对象 1.3. 第二部分 - 关联映射 1.3.1. ...

    hibernate3.2中文文档(chm格式)

    1.2. 第一部分 - 第一个Hibernate应用程序 1.2.1. 第一个class 1.2.2. 映射文件 1.2.3. Hibernate配置 1.2.4. 用Ant构建 1.2.5. 启动和辅助类 1.2.6. 加载并存储对象 1.3. 第二部分 - 关联映射 1.3.1. ...

    HibernateAPI中文版.chm

    1.2. 第一部分 - 第一个Hibernate应用程序 1.2.1. 第一个class 1.2.2. 映射文件 1.2.3. Hibernate配置 1.2.4. 用Ant构建 1.2.5. 启动和辅助类 1.2.6. 加载并存储对象 1.3. 第二部分 - 关联映射 1.3.1. ...

    搞定J2EE核心技术与企业应用:Ajax,JSP,Struts2,Spring,Hibernate,完整扫描版

    《搞定j2ee核心技术与企业应用:ajax,jsp,struts 2,spring,hibernate》是笔者在多年项目开发过程中的经验总结,它通过丰富的实例由浅入深、循序渐进地介绍了目前采用java进行web开发的各种框架的使用方法,从而...

    hibernate.doc

    Hibernate总结 一、应用程序的分层结构 二、hibernate数据持久化组件 ... 五、持久化对象(PersistentObject) 六、Hibernate中实体关系的处理 ....

    Struts+Spring+Hibernate 整合开发 (企业应用实战)part2

    本书所介绍的内容是作者多年J2EE 开发经验的总结,内容涉及 Struts 、 Hibernate 和 Spring 三个 开源框架,还介绍了 Tomcat 和 Jetty 两个开源 Web 服务器的详细用法,以及 J2EE 应用的几种常用 架构。 详尽而...

    hibernate+中文api

    1.2. 第一部分 - 第一个Hibernate应用程序 1.2.1. 第一个class 1.2.2. 映射文件 1.2.3. Hibernate配置 1.2.4. 用Ant构建 1.2.5. 启动和辅助类 1.2.6. 加载并存储对象 1.3. 第二部分 - 关联映射 1.3.1. ...

    轻量级J2EE 企业应用实战 Struts+Spring+Hibernate整合开发

    本书所介绍的内容是作者多年J2EE 开发经验的总结,内容涉及Struts 、Hibernate 和Spring 三个开源 框架,还介绍了Tomcat 和Jetty 两个开源Web 服务器的详细用法,以及J2EE 应用的几种常用架构。 本书不仅是一本J2EE ...

    Struts+Spring+Hibernate 整合开发 (企业应用实战)part1

    本书所介绍的内容是作者多年J2EE 开发经验的总结,内容涉及 Struts 、 Hibernate 和 Spring 三个开源框架,还介绍了 Tomcat 和 Jetty 两个开源 Web 服务器的详细用法,以及 J2EE 应用的几种常用架构。 详尽而细致地...

    轻量级J2EE企业应用实战:Struts+Spring+Hibernate整合开发

    本书所介绍的内容是作者多年J2EE开发经验的总结,内容涉及三个开源框架:Struts、Hibernate和Spring,还介绍了Tomcat和Jetty两个开源Web服务器的详细用法,以及J2EE应用的几种常用架构。  本书不仅仅是一本J2EE...

    Hibernate中文详细学习文档

    1.2. 第一部分 - 第一个Hibernate应用程序 1.2.1. 第一个class 1.2.2. 映射文件 1.2.3. Hibernate配置 1.2.4. 用Ant构建 1.2.5. 启动和辅助类 1.2.6. 加载并存储对象 1.3. 第二部分 - 关联映射 1.3.1. ...

Global site tag (gtag.js) - Google Analytics