- 浏览: 3560913 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (1491)
- Hibernate (28)
- spring (37)
- struts2 (19)
- jsp (12)
- servlet (2)
- mysql (24)
- tomcat (3)
- weblogic (1)
- ajax (36)
- jquery (47)
- html (43)
- JS (32)
- ibatis (0)
- DWR (3)
- EXTJS (43)
- Linux (15)
- Maven (3)
- python (8)
- 其他 (8)
- JAVASE (6)
- java javase string (0)
- JAVA 语法 (3)
- juddiv3 (15)
- Mule (1)
- jquery easyui (2)
- mule esb (1)
- java (644)
- log4j (4)
- weka (12)
- android (257)
- web services (4)
- PHP (1)
- 算法 (18)
- 数据结构 算法 (7)
- 数据挖掘 (4)
- 期刊 (6)
- 面试 (5)
- C++ (1)
- 论文 (10)
- 工作 (1)
- 数据结构 (6)
- JAVA配置 (1)
- JAVA垃圾回收 (2)
- SVM (13)
- web st (1)
- jvm (7)
- weka libsvm (1)
- weka屈伟 (1)
- job (2)
- 排序 算法 面试 (3)
- spss (2)
- 搜索引擎 (6)
- java 爬虫 (6)
- 分布式 (1)
- data ming (1)
- eclipse (6)
- 正则表达式 (1)
- 分词器 (2)
- 张孝祥 (1)
- solr (3)
- nutch (1)
- 爬虫 (4)
- lucene (3)
- 狗日的腾讯 (1)
- 我的收藏网址 (13)
- 网络 (1)
- java 数据结构 (22)
- ACM (7)
- jboss (0)
- 大纸 (10)
- maven2 (0)
- elipse (0)
- SVN使用 (2)
- office (1)
- .net (14)
- extjs4 (2)
- zhaopin (0)
- C (2)
- spring mvc (5)
- JPA (9)
- iphone (3)
- css (3)
- 前端框架 (2)
- jui (1)
- dwz (1)
- joomla (1)
- im (1)
- web (2)
- 1 (0)
- 移动UI (1)
- java (1)
- jsoup (1)
- 管理模板 (2)
- javajava (1)
- kali (7)
- 单片机 (1)
- 嵌入式 (1)
- mybatis (2)
- layui (7)
- asp (12)
- asp.net (1)
- sql (1)
- c# (4)
- andorid (1)
- 地价 (1)
- yihuo (1)
- oracle (1)
最新评论
-
endual:
https://blog.csdn.net/chenxbxh2 ...
IE6 bug -
ice86rain:
你好,ES跑起来了吗?我的在tomcat启动时卡在这里Hibe ...
ES架构技术介绍 -
TopLongMan:
...
java public ,protect,friendly,private的方法权限(转) -
贝塔ZQ:
java实现操作word中的表格内容,用插件实现的话,可以试试 ...
java 读取 doc poi读取word中的表格(转) -
ysj570440569:
Maven多模块spring + springMVC + JP ...
Spring+SpringMVC+JPA
mysql中库表News,字段如下
id | int | auto_increment | primary key
title | varchar
content | varchar
date | varchar
1:Hibernate的insert操作
Session session = HibernateSessionFactory.getSession();
News news = new News();
news.setContent("my content");
news.setTitle("my title");
news.setDate("my date"); //news是VO
Transaction trans = session.beginTransaction();
session.save(news); //news是PO
trans.commit(); //任何有关数据库更新的操作都是commit后进数据库的
HibernateSessionFactory.closeSession();
2:Hibernate的update操作
Session session = HibernateSessionFactory.getSession();
News news = new News();
news.setId(103); //id不可少,Hibernate只通过id来查找数据库
news.setContent("update content");
news.setTitle("update title");
Transaction trans = session.beginTransaction();
session.update(news);
trans.commit();
HibernateSessionFactory.closeSession();
注意这里我们更新数据不想对date进行更新,所以没写 setDate ,但Hibernate会认为我们是想把date设置为null,所以如果要更新表中一些字段,最好用下面的方法。
Session session = HibernateSessionFactory.getSession();
Transaction trans = session.beginTransaction();
News news = (News)session.get(News.class, 103); //*****(1)
news.setDate("update date"); //*****(2)
session.save(news); //*****(3)
trans.commit();
HibernateSessionFactory.closeSession();
这里其实对数据库进行了两次操作,(1)时从数据库中把相应纪录查找出来,这里news是一个PO,(2)对PO进行date的更新,其他数据没 变,然后(3)保存,由于(1)查出的数据就有title,content,所以保存时候title和content都不会是null。
3:Hibernate的delete操作
Session session = HibernateSessionFactory.getSession();
Transaction trans = session.beginTransaction();
News news = new News();
news.setId(8); //用下面那句效果一样,只是多了句select
// News news = (News)session.get(News.class, 8);
session.delete(news);
trans.commit();
HibernateSessionFactory.closeSession();
注意,只能通过id来删除数据,不能通过title或content来删除,会报缺少标示符错误。
使用hql来删除(可作批量删除)
Session session = HibernateSessionFactory.getSession();
String hql = "delete Billdetail where name>'detailName1'";
Query query = session.createQuery(hql);
int ref = query.executeUpdate();
session.beginTransaction().commit();
System.out.println("delete dates=>"+ref); //操作条数
session.close();
4:Hibernate的select操作
Hibernate的select操作非常丰富,这里写常用的:
1.criteria查询
Session session = HibernateSessionFactory.getSession();
Criteria c = session.createCriteria(News.class);//News是类,所以N大写
c.add(Expression.lt("date", "date5"));
c.add(Expression.between("date", "date1", "date8"));
c.addOrder(Order.desc("date"));
List<News> list = c.list();
for(int i=0;i<list.size();i++)
{
System.out.println(list.get(i).getId()+":"+list.get(i).getDate());
}
HibernateSessionFactory.closeSession();
比较符合面向对象的概念,因为库表和JAVA类已经作了映射关系,注意Hibernate的所有操作都是针对JAVA类的,而不是库表,所以要区分大小写。
上面的查询相当于sql是: select * from news where date < 'date5' and date BETWEEN 'date1' and 'date8' ORDER by date desc;
2.HQL查询
Query query = session.createQuery("from News ");
List<News> list = query.list(); //遍历同上
HQL是Hibernate主推的查询方式,和普通SQL语句也比较接近,但很重要一点不同就是HQL中from后面的是JAVA类名,不是库表名,切忌!!!其它就是如果查询全字段 "select *" 可以省略不写。
当不是查询全字段,或者是从两张表中联合查询数据时,返回的是一个数组:
Session session = HibernateSessionFactory.getSession();
Query query = session.createQuery("select n.id,n.title,u.username from News as n,User u");
List list = query.list();//这里每一行都是一个1维数组
for(int i=0;i<list.size();i++)
{
Object []o = (Object[])list.get(i); //转型为数组
int id = (Integer)o[0]; //和select中顺序的类型相对应,可以是类
String title = (String)o[1];
String username = (String)o[2];
System.out.println("id:"+id+" , "+"title"+title+" , "+username);
}
HibernateSessionFactory.closeSession();
查询结果集的大小(和Hibernate2中稍微有点不同)
(Integer)session.createQuery("select count(*) from User").iterate().next();
3.SqlQuery查询
List<News> list = session.createSQLQuery("select * from News").addEntity(News.class).list();
addEntity 不能忘记,这种查询方式是把查询好的结果放到一个实体中,再遍历操作,不推荐使用。
SqlQuery查询一些字段时候用addScalar:
SQLQuery query = session.createSQLQuery("select id,title from News");
query.addScalar("id", Hibernate.INTEGER); //注册字段类型,同下
query.addScalar("title",new org.hibernate.type.StringType());
List list = query.list();
for(int i=0;i<list.size();i++)
{
Object[] o = (Object[])list.get(i);
int id = (Integer)o[0];
String title = (String)o[1];
System.out.println("id:"+id+" , title:"+title);
}
javabean的属性可以作为命名的查询参数(HQL)
Session session = HibernateSessionFactory.getSession();
Transaction trans = session.beginTransaction()
Query query = session.createQuery("from room in class Room where room.name=:a")
query.setParameter("a", "room1"); //和prepareStatement相似
// Room room1 = new Room();
// room1.setName("room1");
// Query query = session.createQuery("from room in class Room where room.name=:name"); //如果用javabean设置参数来查询,=:name的name一定和Room中对应
// query.setProperties(room1);
List<Room> list = query.list();
for(int i=0;i<list.size();i++)
{
System.out.println(list.get(i).getName()+":"+list.get(i).getDescription());
}
trans.commit();
HibernateSessionFactory.closeSession()
发表评论
-
犯规犯规犯规
2015-09-18 16:45 1348http://bbs.hupu.com/4466597.htm ... -
快速掌握Hibernate中悲观锁和乐观锁
2012-10-19 21:33 1619快速掌握Hibernate ... -
Hibernate延迟加载机制
2012-10-19 21:22 1374Hibernate延迟加载 ... -
Hibernate 子类中不能用session 操作数据库
2012-08-28 14:46 1747Object obj = this.g ... -
hibernate3 下载网址
2012-08-28 12:53 1945我的天啊,居然找个hibernate下载的地址也找了半天 h ... -
师父告诉我诀窍
2012-08-23 16:53 1527<value>classpath*:com ... -
spring 整合 hibernate
2012-07-28 10:41 15011.闲话少说了,先看版本吧。 2.在看要导入的包吧: ... -
使用spring的hibernateTemplate的方法 (转)
2012-07-24 17:12 1544使用spr ... -
hibernate的对象映射配置文件中属性的介绍和说明
2012-03-04 13:45 1698持久化对象之间一对一的关联关系是通过one-to-one 元 ... -
HIbernate主键生成策略详解 (转)
2012-03-04 13:39 1749HIberna ... -
hibernate 复习 单向一对一的实现
2012-03-03 15:38 1476hibernate中单向一对一实现有三种方式:主键关联, ... -
hibernate 复习--demo
2012-03-02 20:40 1561今天晚上,搞好了hibernate的demo了,明天开始就是搞 ... -
HibernateDaoSupport与JdbcDaoSupport
2011-12-30 07:38 17142011年11月07日 星期一 ... -
hibernage getcurrentsession
2011-12-28 18:56 1587org.hibernate.Hibe ... -
hibernate开发资料学习资料
2011-12-28 07:42 1550http://dev.21tx.com/java/struts ... -
hibernate one to many lazy 常见错误解决
2011-06-26 20:17 2614解释一个关于Hibernate l ... -
hibernate的增删改查
2011-06-25 22:03 1861package com.endual.test; impor ... -
frameset
2011-05-25 09:43 1092<a href=url target=_blank> ... -
Hibernate+Spring+Struts2+ExtJS开发CRUD功能
2011-05-17 08:56 4837http://blog.csdn.net/myloon/arc ... -
nginx就启动了
2011-05-13 21:09 1804今天下载了nginx 0.7.52,与以往不同的是,这次版本增 ...
相关推荐
hibernate增删改查
因项目还在开发,所以本人只拿出一块单独的struts+hibernate增、删、改、查来演示,具体的一些包一看就知道; 项目直接在MyEclipse6.0运行,环境是里面自带的,用过的人都知道。本人测试没有问题。 具体的页面...
【hibernate增删改查小例子】是一个基础的教程,旨在帮助初学者理解如何使用Hibernate框架进行数据库操作。Hibernate是Java开发中的一个强大的对象关系映射(ORM)框架,它简化了数据库交互,使开发者可以更专注于...
在提供的压缩包中,`Hibernate增删改查的工具类`实现了这些基本功能,使得在项目中调用这些方法即可完成数据库操作。工具类通常包含静态方法,以便在不创建实例的情况下直接调用,减少了内存消耗。这些方法可能包括...
【hibernate增删改查事例的web工程】是一个基于Hibernate框架的Web应用程序,旨在帮助开发者通过实际操作来理解和掌握Hibernate在数据库操作中的基本功能,包括插入(Insert)、删除(Delete)、更新(Update)和...
基于Struts 2+Hibernate实现员工管理系统。一个单位有多个部门,每个部门有多名员工,每个员工只属于一个部门。基于该要求,实现员工和部门的管理(包括添加、查询、删除和修改等操作),并且要实现部门与员工之间的...
这个"struts2+hibernate增删改查demo"是一个完整的实例,展示了如何将这两个框架集成来实现对数据库的基本操作:添加(Add)、删除(Delete)、修改(Update)和查询(Query)。下面,我们将深入探讨这两个框架及其...
“hibernate增删改查和动态sql”这个标题涵盖了两个主要的Hibernate使用场景。首先,"增删改查"(CRUD操作)是任何数据库操作的基础,包括创建(Create)、读取(Read)、更新(Update)和删除(Delete)。在...
本篇文章将详细探讨这三大框架如何协同工作,实现数据的增删改查(CRUD)功能。 首先,Spring框架是一个全面的后端应用程序开发框架,它提供了依赖注入(DI)和面向切面编程(AOP)等核心特性。在"Spring+Struts2+...
**Hibernate 增删改查全面指南** 在Java开发中,Hibernate是一个强大的对象关系映射(ORM)框架,它极大地简化了数据库操作。本指南将深入探讨Hibernate如何进行增、删、改、查(CRUD)操作,这些是任何数据库应用...
综上所述,"struts2+hibernate增删改查+分页"是一个基础的Java Web开发示例,它涵盖了MVC架构下,如何利用Struts2处理用户请求,通过Hibernate进行数据库操作,以及实现简单的分页功能。这种组合在实际项目中非常...
在"Hibernate增删改查"这个小实例中,可能包含以下步骤: 1. 创建实体类,例如一个User类,包含id、name、email等属性,并使用`@Entity`注解标记为持久化类。 2. 定义属性的映射,使用`@Id`、`@GeneratedValue`、`@...
本篇文章将详细解析标题"hibernate增删改查代码"所涵盖的知识点,并结合描述,为初学者提供深入理解Hibernate的基础。 首先,让我们了解Hibernate的核心概念。Hibernate是一个Object-Relational Mapping(ORM)框架...
在这个MyEclipse项目中,我们将深入探讨这三大框架如何协同工作,实现数据库的增删改查操作。 SpringMVC是Spring框架的一个模块,专门用于处理Web请求。它遵循Model-View-Controller(MVC)设计模式,将业务逻辑、...
在"Spring+Hibernate 增删改查等基本操作"这个主题中,我们主要探讨的是如何整合这两个框架来实现数据持久化。以下是一些关键的知识点: 1. **Spring**: - **依赖注入(DI)**:Spring的核心特性之一,通过XML...