Hibernate 中对增删改查

Struts2+hibernate实现用户登录和增删改查案例 Struts2+hibernate实现用户登录和增删改查案例 开发工具MyEclipse 10.7.1 创建一个项目 web项目project。 部署好Struts2的开发环境:      1、引入需要的类库文件 jar      2、添加struts2的配置文件 struts.xml    //src路径  :classespath:      3、在web.xml添 阅读详情
Hibernate 中对增删改查的小结 mysql 中库表 News,
字段如下 id title date | int | auto_increment | primary key |  varchar | varchar content | 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,
对 PO 进行 date 的更新,其他 数据没变,然后保存,由于(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 来删除,会报缺少标示符错误。
(2)使用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 相似
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() 

别再买成品了!手把手教你用0.5mm漆包线DIY高频空芯电感(附计算软件和脱漆技巧) 本文详细介绍了如何用0.5mm漆包线DIY高频空芯电感,涵盖从理论计算到实际绕制的完整流程。通过精确的几何参数控制和专业绕制工艺,读者可以制作出性能优异的高频电感,适用于射频匹配网络、LC谐振电路等场景。文章还提供了计算软件推荐和脱漆技巧,帮助爱好者轻松实现个性化电感制作。 阅读详情

相关推荐

从零搭建:基于Matlab/Simulink与FlightGear的飞行器实时可视化仿真平台

本文详细介绍了如何从零搭建基于Matlab/Simulink与FlightGear的飞行器实时可视化仿真平台。通过环境准备、模型部署、接口配置及联合仿真等步骤,帮助用户快速掌握飞行器仿真的核心技术,实现高效的三维可视化与实时数据交互。

weixin_29100399的博客 517

比较数据更新前后,有哪些字段发生了变化

比较数据更新前后,有哪些字段发生了变化前言一、核心判断逻辑二、测试示例总结 前言 最近工作上遇到的日志需求:用户进行修改数据时,需要记录用户修改了哪些字段,修改前,修改后的值分别是什么。 一、核心判断逻辑 判断空的逻辑,可以根据业务调整。 private static List<String> getFiledName(Object o1, Object o2) throws Exception { List<String> result = new Ar

qq_37700773的博客 1826

mac(apple silicon)arm64安装spm12详细教程

3.下载matlab runtime R2023b for macOS (macA64),注意必须下载这个,只下载matlab是不可以的。默认安装目录是/Applications/MATLAB/MATLAB_Runtime/R2023b。注意最后的命令,路径根据自己的matlab_runtime安装位置进行调整,然后就可以安装成功了。5. 解压spm12.zip,解压后将文件夹拖到应用程序下(Applications)2.下载spm12,这个版本可兼容mac芯片!6.打开mac终端,输入。

weixin_62332001的博客 2028

hibernate增删改查

首先,所有的操作都是在打开session之后进行的,所以我后面给出的增删改查代码块都应该放在session开启之后,提交之前,在注释的位置 SessionFactory sf = new Configuration().configure().buildSessionFactory(); Session s = sf.openSession(); s.beginTransaction(); //在这里 s.getTransaction().co

weixin_38857307的博客 1456

MC1496乘法器AM调制电路搭建全流程(附Multisim 14.0仿真文件)

本文提供了基于MC1496乘法器搭建AM调制电路的完整实战指南。针对仿真模型缺失的痛点,详细讲解了从晶体管级手动构建MC1496等效模型,到外围电路设计、调制度参数计算与调节,并在Multisim 14.0中进行仿真验证的全流程。通过深度剖析MC1496内部原理与AM信号调制机制,帮助读者获得从仿真到实践的可控设计与排错能力。

weixin_29190169的博客 598

AI智能体安全沙箱agentguard:为LLM代码执行筑起防火墙

在AI应用开发领域,大语言模型(LLM)驱动的智能体(Agent)能够自动生成并执行代码,极大地提升了自动化能力。然而,赋予AI直接执行系统命令的权限也带来了显著的安全风险,如恶意代码注入、敏感数据泄露和系统资源滥用。为了解决这一核心矛盾,安全沙箱技术应运而生,它通过在不可信代码与宿主系统之间建立隔离层,实现"默认拒绝、最小权限"的安全原则。agentguard项目正是这一理念的工程实践,它结合白名单机制与容器化隔离,为AI智能体提供了可配置、可审计的安全执行环境。该方案不仅适用于内部自动化工具开发,也为构

weixin_28695537的博客 298

使用hibernate实现增删改查

前言 最近开始在公司实习了,刚开始还没有跟项目,只是接到leader的指令看以往的代码,然后自己添加简单额增删改查功能。公司用的是springboot+hibernate的框架。 创建数据库 首先贴出数据库的代码,因为是测试,所以比较简单,只有三个字段: CREATE TABLE `t_test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name`...

ali_lili的博客 4814

windows的rancherDesktop修改镜像源

Rancher Desktop中的“Allowed Images”功能(通常在 Preferences -> Container Engine -> Allowed Images 中找到)是用来定义一个允许拉取和推送的镜像列表的规则,例如,只允许从您组织或特定的受信任的仓库中获取镜像。如果问题依旧,请提供您Rancher Desktop的版本和当前选择的容器运行时,以便进一步协助。总结一下,对于Windows上的Rancher Desktop,如果您使用默认的。,镜像源的配置通常通过一个名为。

zwjapple的专栏 2701

Hibernate-增删改查

以下基于Hibernate基本测试的Student类,采用JUnit3测试 增加 import java.util.ArrayList; import java.util.List; import junit.framework.TestCase; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import entity.Student

weixin_45335305的博客 431

Vue3多级路由缓存失效的深度解析与实战解决方案

本文深度解析了Vue3项目中多级路由下keep-alive缓存失效的根本原因,并提供了三种实战解决方案:通过路由扁平化根治问题、利用状态管理精细模拟缓存效果,以及借助keep-alive-vue3插件快速修复。文章旨在帮助开发者彻底理解Vue Router与keep-alive的协作机制,从而根据项目情况选择最佳策略,有效解决页面状态丢失的难题。

weixin_29015801的博客 286

Ceres Solver:从入门到使用

Ceres Solver是谷歌开源的C++非线性优化库,能够解决有约束或无约束条件下的非线性最小二乘问题。2010年之后大量的运用在谷歌的产品开发中,尤其在谷歌开源的cartographer中被大量的使用。 ceres可以在Linux,Windows,macOS,Andrioid,IOS系统进行安装使用,详情可查看下方的官网链接。 Ceres Solver 官网:http://ceres-solver.org/

非晚非晚的博客 1万+

Hibernate增删改查。。。

public class StudentDao extends Studentservice{ @Override public void saveStudent(Student stu ){ Session session=HibernateUtils.openSession(); Transaction tr=session.beginTransaction(); ses...

咖喱辣椒 187

什么是华为OD?怎么才能通过华为OD机试?华为OD机试怎么刷题?(2024最新华为OD机试E卷更新中)

华为OD是Outsourcing Dispacth模式,是华为和外企德科联合招聘的简称。目前华为大多数是OD招聘。OD模式也是华为提出的一种新的用工形式,每年都会从OD项目挑优秀员工转为正编。所有OD和正式员工一样对待,没有差别,部门平时开会、评审等活动都是一起参加的,是同薪同酬,都是由华为的HR直接定的薪资,看的是我们技术能力。华为是大企业,能到华为上班也是有能力的,每个部门都有好多职位,是金子,在哪都会发光。

KJ.JK 11万+

hibernate的增删改查

hibernate的增删改查 1.hibernate简介 ORM框架/持久层框架 jdbc的一个框架 object reference mapping 通过管理对象来改变数据库中的数据 通过管理对象来操作数据库 2.连接jdbc的六个步骤 2.1、加载驱动 2.2、建立连接 2.3、获取预定义处理对象 preparestatment 2.4、执行sql 2.5、处理结果集 2.6、关闭 3.在项目...

weixin_44222066的博客 191

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Hibernate——(2)增删改查

案例名称:Hibernate完成增删改查 案例描述:抽取出工具类并完成删除、修改、查询功能。 具体过程: 1、使用上面的例子(Hibernate——(1)Hibernate入门http://blog.youkuaiyun.com/dawanganban/article/details/13748235) 2、新建HibernateUtils :用于封装创建Session的方法。 package

水寒 3539

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Hibernate增删改查接口

我演示的是一个书籍管理系统中书籍信息增删改查的一个实例首先,先配置hibernate环境,这个之前介绍过,这里就不做详细介绍了创建增删改查接口public interface BookDao { public Book selectBook(int id); public void updateBook(int id,Book book); public void deleteBook(in...

hlgwwhhdd的博客 226

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

hibernate入门及增删改查

hibernate几大特性 a.ORM框架/持久层框架 jdbc的一个框架 b.object reference mapping 对象关系映射 c.通过管理对象来改变数据库中的数据 d.通过管理对象来操作数据库 后来被mybatis取代 目标: 学会使用hibernate对数据库数据进行操作(增删改查) 一、使用 1.导入hibernate环境依赖 <!-- https://mvnrepository.com/artifact/org.hibernate/hiberna...

weixin_55966394的博客 1024

Hibernate 增删改查操作

首先需要使用Hibernate逆向生成实体类。 参考文章:点击打开我这里有两张表。 数据如下: 整个工程结构如下: MySessionFactory.java:package entity;import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.SessionF

new_Aiden的博客 706

spring + hibernate 增删改查

昨天完成spring+hibernate的查询的简单的功能今天准备插入的功能其他的配置都不改------>只是在testSpring里面----->的测试的添加的数据下面是查询添加的数据接下来修改名称修改成功接下来是删除删除成功30号的id没有啦今天准备看了一下mybatis的连接数据库连接池------>还有期末的项目,先完成---->一点一点的学习今天完成的事情:完成s...

thelostworld 159

hibernate的基本增删改查

hibernate的基本的增删改查 将之前的相同部分代码分装成一个类 HibernateUtil.java package util; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public class HibernateUtil { //声明一个私有的静态final类型的Configuration对象 private s

林深不见鹿 2830

用hibernate对mysql进行增删改查操作_Hibernate中实现增删改查的步骤详解

1.首先我们要知道什么是HibernateHibernate是一个轻量级的ORMapping对象。主要用来实现Java和数据库表之间的映射,除此之外还提供数据查询和数据获取的方法,可以大幅度减少开发时人工使用SQL和JDBC处理数据的时间,解放编程人员95%的任务。2.什么是ORM Object-Relational-Mapping对象关系映射ORM:是通过java对象映射到数据库表,通过操作J...

weixin_35511854的博客 621

Java-Hibernate简单增删改查

Hibernate 简单增删改查 转载自 https://www.shiyanlou.com/courses/document/971 一、实验环境说明1. 环境登录无需密码自动登录,系统用户名 shiyanlou,密码 shiyanlou2. 环境介绍本实验环境采用带桌面的 Ubuntu Linux 环境,实验中可能会用到桌面上的程序:> * XfceTerminal: Linux 命令行终

SoftStar的专栏 681

Hibernate增删改查

hibernate增加 @Override public boolean add(PatientInfo pi) { // TODO Auto-generated method stub SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); Session session = sessionFac...

猩猩是个好程序员的博客 194

Hibernate入门(四)Hibernate增删改查

前言       本章讲解Hibernate的增删改查 方法 1.构建获取Session的工具方法 如同我们第一次使用JDBC的时候和MyBatis的时候,connection对象和SqlSession对象都要经过一个工具类进行获取,那么单独使用Hibernate的时候也不例外! 这里我给一个例子: package cn.edu.ccut.util; import org.hiber...

jwang的博客 335

使用Hibernate完成增删改查

使用Hibernate完成增删改查1.hibernate的简介概念语言特点工作原理优点2.项目中添加Hibernate支持2-1.添加hibernate相关依赖,web.xml配置2-2.在resource目录下添加hibernate.cfg.xml(核心配置文件)2-3.在开发阶段再创建实体类和实体映射文件(*.hbm.xml)3.实现增删改查功能增删改查 1.hibernate的简介 概念...

water_java的博客 1440

hibernate 增删改查crud

package com.jxq.test; import java.util.Iterator; import java.util.List; import org.hibernate.Session; import org.junit.Test; import com.jxq.common.HibernateUtils; import com.jxq.model.User; public...

wxljmy的专栏 443
上一篇: 精通HQL
下一篇: 关系映射一对多,多对一详解
日依
博客等级 码龄15年 165粉丝 165原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值