Hibernate之单张表的增,删,改,查以及批量操作

菜鸟学习Hibernate——简单的增、删、改、查操作 上篇博客利用Hibernate搭建起一个简单的例子,把数据库的映射显示了出来在上一篇的博客基础上这篇博客讲述如何利用Hinbernate框架实现简单的数据库操作。 1、加入junit.jar 2、新建一个工具类HibernateUtils.Java把一些对session的公共操作封装起来 import org.hibernate.Session; import org.hibernate.S 阅读详情

一.hibernate步骤

1.六个准备(三拷三配):

  • 拷jdbc驱动
  • 拷hibernate开发包
  • 拷 log4j
  • 配pojo(以一张学生表为例,数据库中两个字段。注意:要实现序列化)
public class Student  implements Serializable {
    private int sid;
    private String sname;
    //...setters和getters方法已省略   
}
  • 配映射文件
column :是数据库里面的字段,name: 是pojo的字段;不相同就得都写,名字相同可以省略
<hibernate-mapping>
    <class name="com.pojo.Student" table="stu">
        <id name="sid" column="id">
            <generator class="identity"/>
        </id>
        <property name="sname" column="name"/>
    </class>
</hibernate-mapping>
  • 配总的配置文件
 <hibernate-configuration>
    <session-factory>
        <property name="myeclipse.connection.profile">MySQL5</property>
        <property name="connection.url">jdbc:mysql://127.0.0.1:3306/s38</property>
        <property name="connection.username">root</property>
        <property name="connection.password">admin</property>
        <property name="connection.driver_class">
        com.mysql.jdbc.Driver
        </property>
        <property name="dialect">
        org.hibernate.dialect.MySQLDialect
        </property>
        <property name="show_sql">true</property>
        <property name="format_sql">true</property>
        <mapping resource="com/pojo/Student.hbm.xml" />
    </session-factory>
 </hibernate-configuration>

2.七个步骤(上一篇博文写了)

由于进行持久化操作的时候,多次用到了session,所有我们可以把得到session分装成一个公共的方法。

如下:

public class HibernateSessionFactory {
    private static Configuration cfg=new Configuration().configure();
    private static SessionFactory factory=cfg.buildSessionFactory();
    private static Map<Thread, Session> map = new HashMap();

    public static Session getSession()
    {
        Session session = map.get(Thread.currentThread());
        if (session==null || session.isOpen()==false)
        {
            session = factory.openSession();
            map.put(Thread.currentThread(), session);
        }

        return session;

    }
}

3.添加学生表的记录

**单个操作以主键为核心:
session.get() 找 ;
session.get() 添加 ;
session.delete() 删除 ;
session.update() 改

public class AddStu {

    /**
     * @param Anges
     * 添加学生表的记录
     */
    public static void main(String[] args) {
        Session session=HibernateSessionFactory.getSession();
        Transaction tr=session.beginTransaction();
        Student stu=new Student();
        stu.setSname("lili");
        session.save(stu);
        tr.commit();
        session.close();
    }
}

4.根据主键查找学生

public class FindStu {

    /**
     * @param Anges
     * 根据主键查找学生
     * 可以不用事务
     */
    public static void main(String[] args) {
        Session session=HibernateSessionFactory.getSession();
        Student stu=(Student) session.get(Student.class, 1);
        if(stu==null){
            Logger.getRootLogger().info("查无此人");
        }else{
            Logger.getRootLogger().info(stu.getSname());
        }
    }

}

5.修改

public class UpdateStu {

    /**
     * @param Anges
     * 先查到学生然后再修改
     */
    public static void main(String[] args) {
        Session session=HibernateSessionFactory.getSession();
        Student stu=(Student) session.get(Student.class, 1);
        if(stu==null){
            Logger.getRootLogger().info("查无此人");
        }else{
            Transaction tr=session.beginTransaction();
            stu.setSname("luoli");
            session.update(stu);
            tr.commit();
            Logger.getRootLogger().info(stu.getSname());
        }
        session.close();
    }
}

6.删除

public class DeleteStu {

    /**
     * @param Anges
     * 先查到学生然后再删除
         */
    public static void main(String[] args) {
        Session session=HibernateSessionFactory.getSession();
        Student stu=(Student) session.get(Student.class, 1);
        if(stu==null){
            Logger.getRootLogger().info("查无此人");
        }else{
            Transaction tr=session.beginTransaction();
            session.delete(stu);
            tr.commit();
        }
        session.close();
    }

}

7.

public class QueryFindStu {
    /**
     * @param Anges
     * 批量查找
     */
    public static void main(String[] args) {
        Session session=HibernateSessionFactory.getSession();
        String hql="from Student";  //在hql中: 表名改成类名  ,字段名改成属性名
        Query query=session.createQuery(hql);
        List<Student> list=query.list();
        for (Student stu : list) {
            System.out.println(stu.getSid()+"\t"+stu.getSname());
        }

    }
}
Win11家庭版彻底关闭Hyper-V的3种方法(实测有效) 本文详细介绍了Win11家庭版彻底关闭Hyper-V的3种实测有效方法,解决与VMware的兼容性问题。包括命令行禁用虚拟化功能、微软官方工具DG_Readiness深度清理以及组策略与功能组件联用方案,帮助用户高效禁用Hyper-V并优化系统性能。 阅读详情

相关推荐

Plant Simulation新手入门:5步搞定生产线物流仿真(附模型库使用技巧)

本文为Plant Simulation新手提供了从零开始构建生产线物流仿真的五步入门指南。通过理念重塑、流程规划、对象连接、参数设置到数据分析的完整流程,帮助用户快速掌握这一强大仿真工具的核心逻辑。文章特别强调了模型库的高效使用技巧,助力工程师在虚拟环境中精准模拟和优化生产系统,提升规划效率。

efc123456的博客 333

使用Hibernate(JPA)一键式删除

在旧版本的Hibernate中,我可以看到手册中指示的一键式删除 。 但是较新的版本不再包含此部分。 我不知道为什么。 因此,在这篇文章中,我来看看它是否仍然有效。 一键式删除部分显示: 有时一个接一个地删除收集元素可能效率极低。 对于新的空集合(例如,如果您调用list.clear() ,Hibernate不会这样做。 在这种情况下,Hibernate将发出一个DELETE 。 ...

最佳 Java 编程 458

你不知道的Postman的Mock接口测试,看这一篇就够了

创建Mock服务你可以从Postman已有的测试集(Collection)中创建Mock Server或者直接创建Mock Server(我们这里选择从已有的测试集中创建Mock Server)Mock server详细配置页面,在此页面中我们可以设置:命名Mock Server选择一个环境(可选的),我们可以选择之前设置过的环境,Mock Server将会使用对应环境中设置过的变量在对应的请求和响应中如果想要将Mock Server设置私有访问的,那么可以勾选此选项,不勾选则对所有人可见。

654

hibernate删除数据

我这里用到的是把一张表里的数据都删除 //创建一个事务 //根据hibernate配置文件的配置信息,创建一个configuration实例 Configuration configuration = new Configuration().configure(); //创建SessionFactory实例 SessionFact...

青苔小榭 5677

【教程】BM1684X-32边缘计算盒子 网络配置教程

BM1684X边缘计算盒子网络配置教程

ShiMetaPi的博客 712

⭐⭐⭐全网最详细YOLOv8教程,从环境配置到自己训练,再到数据集的制作,包的各位⭐⭐⭐

问题原因:当你“pip install ultralytics” 时,torch和torchvision会作为它的依赖一起安装了,当执行“pip install torch torchvision torchaudio --index-url。”时,会卸载torch,然后再安装torch+cuda版本,但是不会自动卸载torchvision已有版本,然后再安装torchvision+cuda版本。🎉🎉🎉恭喜各位道友,已经可以训练模型了,现在就是制作自己的数据集,所谓申神通秘境,随心所欲,万物皆可识别也

weixin_74840239的博客 7491

Hibernate 删除主表记录并删除副表记录解决方法

公司的OA。采用SSH(Spring+Struts1.0+Hibernate) 小弟接触Hibernate不久,写的文章难免有些地方欠妥,如有不对之处,请给我留言或用QQ(941867223)联系我及时更改,以免误导别人。谢谢!数据库表字段太多了,暂时不贴出来了,如有需求者用QQ联系我发到邮箱就行了:我要删除员工记录功能Employee.hbm.xml配置文件如下:

xiangsuixinsheng的专栏 5006

【2021末九软工边缘人保研】川大-中科院网络中心-华师夏令营+哈工大本-中科院网络中心-西交-厦大-中山-武大-北航预推免

2021末九软工边缘人保研记录一、写在前面二、个人背景 一、写在前面 2020年计算机保研可谓是诸神黄昏,卷的头破血流(指我等菜鸡)。疫情的原因,今年的夏令营和预推免基本全部改为线上,机试取消,能不能拿到offer基本完全取决于背景以及面试表现(当然也有个别头铁非要机试,甚至笔试的学校)。大佬们offer收割不停,我等边缘人只能看着一封封拒信发呆。 这种情况下,只有985 Rank5%以及211 Rank2%之前的大佬能够较为轻松地拿到面试入场券。贴一个上交电院夏令营要求你们感受一下: 预推免相比起夏令营

weixin_43222706的博客 4235

hibernate中对单表的增、删、该、查

hibernate中对单表的增、删、该、查 增 //相当于打开连接池 Sesssion session = HibernateUtil.openSession(); //创建一个对象 Customer customer = new Customer(); //向对象中添加数据 customer.setCust_name("name1"); //保存 session.save(customer);...

weixin_43478300的博客 177

【工具】GitHub学生认证+PyCharm配置Copilot全流程指南

本文提供了一份详细的GitHub学生认证及在PyCharm中配置Copilot的完整指南。通过完成A2F认证、准备有效材料并使用干净网络环境,学生可免费获取GitHub Copilot Pro订阅,极大提升编程学习与开发效率。

w7x8y9z的博客 1454

802.1AS-2011_Gptp协议栈

GPTP(广义时钟同步协议,或IEEE 802.1AS)的基本功能是确保局域网中所有的时钟都同步,并提供时间信息。这种协议用于在局域网中进行同步和时间对齐,其目的是确保网络中各设备的时间一致性。

weixin_49041703的博客 2540

不同于hibernate,利用通用持久类实现数据增、删、改、查,可极大提高开发效率

DAO类+通用持久类,实现数据增、删、改、查 标题中“DAO类”指net.newxy.dbm.BaseDAO或其子类,“通用持久类”指net.newxy.dbm.DynaDto。利用newxy(新坐标)DAO类及通用持久类对数据进行增、删、改操作可以不依赖于struts,运用系统不一定要支持struts,方法极其简便。一、通用持久类简介:1.net.newxy.dbm.Dy

nlhlx的专栏 3565

【华为OD机试真题】458、堆内存申请 | 机试真题+思路参考+代码解析(CD卷)(C++、Java、Py)

题目描述 >有一个总空间为100字节的堆,现要从中新申请一块内存,内存分配原则为优先紧接着前一块已使用内存分配空间足够且最接近申请大小的空闲内存。

KJ.JK 1万+

Hibernate实现记录的增、删、改和查功能

本节讲述如何使用Hibernate实现记录的增、删、改和查功能。 1 查询        在Hibernate中使用查询时,一般使用Hql查询语句。 HQL(Hibernate Query Language),即Hibernate的查询语言跟SQL非常相像。不过HQL与SQL的最根本的区别,就是它是面向对象的。 使用HQL时需要注意以下几点: l         大小写敏感 因为HQL是面向对象的...

spring028的专栏 187

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Hibernate--Hibernate增、删、改、查--day02-1

Hibernate增、删、改、查根据主键查询使用session的get()查询使用session的load()查询使用HQL查询简单查询查询单个记录查询所有记录HQL查询语句属性查询实例化查询高级查询查询语句参数绑定按参数位置绑定按参数名称绑定绑定各种类型的参数setProperties()方法 根据主键查询 使用session的get()查询 类加载 Emp emp=session.get(Em...

a1773570500的博客 331

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

使用Hibernate实现简单的增、改、删、查操作

作为Hibernate的初学者,要真正的掌握Hibernate,从简单的增、改、删、查开始。 1.增加(save或persist) 这两个方法都能实现数据的添加,主要区别在于:在没有开启事物时,save( )会执行相关的sql语句,然后在回滚,而persist根本不会执行sql语句。所以这两个方法都要在事物中才能生效。 示例代码: 1 Configuration...

anguizheng9892的博客 185

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Hibernate_2_增、删、改、查的模板:

增、删、改、查的模板: // 调用封装类 生成一个session Session session = HibernateUtils.getSession(); Transaction tx = null;// 声明一个事物 try { tx = session.beginTransaction();// 开始事务 /** *放置

阿_顺u012963457的专栏 753

MyBatis 基于注解的增、删、改、查操作

MyBatis 基于注解的增、删、改、查操作 程序清单:UserMapper.java package com.mapper; import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Option...

2893

Hibernate 基本增查改删

– Start 我们已经学会了如何将表和对象映射起来,下面我们通过例子来看看如何进行基本的增查改删。 package shangbo.hibernate.demo027; public class App { public static void main(String[] args) throws Exception { try (DataService dataService = ne...

千里之行始于足下 222

hibernate增、删、改、查案例

1、hibernate根据主键查询数据 get和load方法 搭建好hibernate环境,测试通过后,直接编写dao、此处省略了service和controller,需要大家自己编写代码补上spring+springmvc+hibernate环境搭建 @Override public Admin selectById(Admin param) { Sess

sky274548769的博客 496

Hibernate常见操作(增、删、改)

Hibernate常见操作        如果利用Hibernate修改数据库时,需要使用事务处理,一个事务提交时才真正将修改过的记录更新到数据库中。 1、增加记录 Session session=HibernateSessionFactory.getSession(); /*定义事务开始*/ Transaction tran=session.beginTransaction

~~~~~~~~~~~~ 7775

Hibernate 抽取工具类 实现简单的增、删、改、查操作

一、HibernateUtils.class public class HibernateUtils { public static final Configuration cfg; public static final SessionFactory sf; static{ cfg = new Configuration().configure(); sf = cfg.bu...

你的调料包 217

如何在代码中编写SQL语句进行增、删、改、查操作?

在代码中使用SQL语句进行增、删、改、查操作的具体方式取决于你使用的编程语言和数据库系统。下面是一些常见编程语言和数据库系统的示例:

m0_47946173的博客 1161

hibernate增、删、改、查(CRUD)

需要注意的地方: 删除和修改操作都要指定对象的id,即主键,经过我的测试,如果不指定对象的主键, 删除和修改操作都是不成功的。 ------------------------------------------------------------------------------------------------------------------------------- 注:我测

friendan的专栏 1503
上一篇: Hibernate的基本工作流程
下一篇: Hibernate遇到的几个常见映射异常
月璇之音
博客等级 码龄12年 27粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值