首页 Hibernate增删改查

Hibernate增删改查

举报
开通vip

Hibernate增删改查Hibernate增删改查 Hibernate mysql中库表News,字段如下 id | int | auto_increment | primary key title | varchar content | varchar date | varchar 1Hibernateinsert Session session = HibernateSessionFactory.getSession(); News news = new News(); news.setContent("my c...

Hibernate增删改查
Hibernate增删改查 Hibernate mysql中库 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf News,字段如下 id | int | auto_increment | primary key title | varchar content | varchar date | varchar 1Hibernateinsert 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(); 2Hibernateupdate 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。 3Hibernatedelete 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(); 4Hibernateselect 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 list = c.list(); for(int i=0;i 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 = 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 = query.list(); for(int i=0;i
本文档为【Hibernate增删改查】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_597436
暂无简介~
格式:doc
大小:24KB
软件:Word
页数:0
分类:
上传时间:2018-02-19
浏览量:10