基于Hibernate对数据库表的单表查询

news2024/11/27 5:33:37

基于Hibernate对数据库表的单表查询

1.依赖

1.1jar包

 1.2配置文件。persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1"
  xmlns="http://xmlns.jcp.org/xml/ns/persistence" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
     http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<!--    配置持久化单元-->
    <persistence-unit name="PZMYSQL" transaction-type="RESOURCE_LOCAL">
<!--        指定实体-->
        <class>entity.User</class>
        <class>entity.Person</class>
        <properties>
            <!-- 标准配置方法,适用性高 -->
            <property name="javax.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver"/>
             <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/xxx?useSSL=false&amp;serverTimezone=GMT%2B8"/>
            <property name="javax.persistence.jdbc.user" value="root"/> 
            <property name="javax.persistence.jdbc.password" value="root"/>
            
            <!-- hibernate 的配置方法-->
             <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
             <property name="hibernate.show_sql" value="true" />
             <property name="hibernate.hbm2ddl.auto" value="update"/> <!--create,create-drop,update,validate  -->
 		</properties>

    </persistence-unit>
</persistence>

1.3目录结构

2.增删改查代码

2.1实体类

  1. Entity注解,指定实体名称
  2. NamedQuery,命名的查询语句
  3. Table注解是映射的数据库表
  4. Id是主键,GeneratedValue是主键生成方式
  5. 属性私有,有get和set以及无参构造等
  6. Transient,表示注解对应的属性不会持久化到数据库中
package entity;

import javax.persistence.*;
import java.io.Serializable;

@Entity(name = "User")
@NamedQuery(
        name="queryAll",
        query = "select user from User user"
)
@Table(name = "user") //映射的表名称
public class User implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;
//    @Transient //不会持久化,不会保存到数据库中
    private String name;

//    ===============构造和get set方法====================
    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }

    public User(Integer id, String name) {
        this.id = id;
        this.name = name;
    }

    public User() {
    }
}

2.2Person类

package entity;

import javax.persistence.*;
import java.io.Serializable;

@Entity(name = "Person")
@Table(name = "person") //映射的表名称
public class Person implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;
    @Transient
    private String name;

    //    ===============构造和get set方法====================
    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Person{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }

    public Person(Integer id, String name) {
        this.id = id;
        this.name = name;
    }

    public Person() {
    }
}

2.3persist添加数据

public static void main(String[] args) {
        //创建工厂
        EntityManagerFactory entityManagerFactory= Persistence.createEntityManagerFactory("PZMYSQL");
        //创建管理者对象
        EntityManager manager=entityManagerFactory.createEntityManager();
        //获取事务对象
        EntityTransaction transaction=manager.getTransaction();
        transaction.begin();
        //增删改的方法
        User user=new User();
        user.setName("陈二");
        //保存数据
        manager.persist(user);
        //提交事务
        transaction.commit();
        //关闭资源
        manager.close();
        entityManagerFactory.close();
    }

2.4remove删除数据

先find再去remove

 public static void main(String[] args) {
        //创建工厂
        EntityManagerFactory entityManagerFactory= Persistence.createEntityManagerFactory("PZMYSQL");
        //创建管理者对象
        EntityManager manager=entityManagerFactory.createEntityManager();
        //获取事务对象
        EntityTransaction transaction=manager.getTransaction();
        transaction.begin();
        //增删改的方法
        User user=new User();
        user.setId(1);
        //删除数据
        user=manager.find(User.class,1);
        manager.remove(user);
        //提交事务
        transaction.commit();
        //关闭资源
        manager.close();
        entityManagerFactory.close();
    }

2.5merge修改

先find再去merge

public static void main(String[] args) {
        //创建工厂
        EntityManagerFactory entityManagerFactory= Persistence.createEntityManagerFactory("PZMYSQL");
        //创建管理者对象
        EntityManager manager=entityManagerFactory.createEntityManager();
        //获取事务对象
        EntityTransaction transaction=manager.getTransaction();
        transaction.begin();
        //增删改的方法
        User user=new User();
        //删除数据
        user=manager.find(User.class,2);
        user.setName("王五");
        manager.merge(user);
        //提交事务
        transaction.commit();
        //关闭资源
        manager.close();
        entityManagerFactory.close();
    }

2.6createQuery基于原生的查询

查询全部基于createQuery(sql);基于JPQL 基于对象的查询

public static void main(String[] args) {
        //创建工厂
        EntityManagerFactory entityManagerFactory= Persistence.createEntityManagerFactory("PZMYSQL");
        //创建管理者对象
        EntityManager manager=entityManagerFactory.createEntityManager();
        //获取事务对象
        EntityTransaction transaction=manager.getTransaction();
        transaction.begin();
        String sql="select user from User user";
        Query query= manager.createQuery(sql);
        List<User> list=query.getResultList();
        System.out.println(list.toString());
        transaction.commit();
        //关闭资源
        manager.close();
        entityManagerFactory.close();
    }

2.7createNativeQuery原生查询

createNativeQuery基于原生的sql查询,需要指定查询的结果的类型

public static void main(String[] args) {
        //创建工厂
        EntityManagerFactory entityManagerFactory= Persistence.createEntityManagerFactory("PZMYSQL");
        //创建管理者对象
        EntityManager manager=entityManagerFactory.createEntityManager();
        //获取事务对象
        EntityTransaction transaction=manager.getTransaction();
        transaction.begin();
        String sql="select * from user";
        Query query= manager.createNativeQuery(sql,User.class);
        List<User> list=query.getResultList();
        System.out.println(list.toString());
        transaction.commit();
        //关闭资源
        manager.close();
        entityManagerFactory.close();
    }

2.8createNamedQuery命名查询

基于createNamedQuery的查询,User中写的也是JPQL语句

public static void main(String[] args) {
        //创建工厂
        EntityManagerFactory entityManagerFactory= Persistence.createEntityManagerFactory("PZMYSQL");
        //创建管理者对象
        EntityManager manager=entityManagerFactory.createEntityManager();
        //获取事务对象
        EntityTransaction transaction=manager.getTransaction();
        transaction.begin();
        Query query= manager.createNamedQuery("queryAll",User.class);
        List<User> list=query.getResultList();
        System.out.println(list.toString());
        transaction.commit();
        //关闭资源
        manager.close();
        entityManagerFactory.close();
    }

2.9基于原生插入

add 基于原生插入createNativeQuery,executeUpdate,需要指定返回的结果的类型
参考:https://betheme.net/houduan/1480.html?action=onClick

public static void main(String[] args) {
        //创建工厂
        EntityManagerFactory entityManagerFactory= Persistence.createEntityManagerFactory("PZMYSQL");
        //创建管理者对象
        EntityManager manager=entityManagerFactory.createEntityManager();
        //获取事务对象
        EntityTransaction transaction=manager.getTransaction();
        transaction.begin();

        Integer x= manager.createNativeQuery("insert into user(name) values ('张三')",Integer.class).executeUpdate();
       System.out.println(x);
        transaction.commit();
        //关闭资源
        manager.close();
        entityManagerFactory.close();
    }

2.10不设置注解自增的插入

 自己设置主键的值的话需要注释掉  @GeneratedValue(strategy = GenerationType.AUTO)

并在插入数据的时候指定主键

public static void main(String[] args) {
    //创建工厂
    EntityManagerFactory entityManagerFactory= Persistence.createEntityManagerFactory("PZMYSQL");
    //创建管理者对象
    EntityManager manager=entityManagerFactory.createEntityManager();
    //获取事务对象
    EntityTransaction transaction=manager.getTransaction();
    transaction.begin();
    User user=new User();
    user.setId(10);
    user.setName("赵六");
    manager.persist(user);
    transaction.commit();
    //关闭资源
    manager.close();
    entityManagerFactory.close();
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/364691.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

docker 部署centos7.9并打包成docker

下载centos基础镜像 docker pull centos:centos7 运行镜像 docker run -itd --name centos-test -p 60001:22 --privileged centos:centos7 /usr/sbin/init 进入容器 docker exec -it ebec90068696 /bin/bash 配置容器信息 安装ssh服务和网络必须软件 yum install net-to…

Linux基础命令-pstree树状显示进程信息

Linux基础命令-uname显示系统内核信息 Linux基础命令-lsof查看进程打开的文件 Linux基础命令-uptime查看系统负载 文章目录 前言 一 命令介绍 二 语法及参数 2.1 使用man查看命令语法 2.2 常用参数 三 参考实例 3.1 以树状图的形式显示所有进程 3.2 以树状图显示进程号…

【计算机网络 -- 期末复习】

例题讲解 IP地址&#xff08;必考知识点&#xff09; 子网掩码 子网划分 第一栗&#xff1a; 子网划分题目的答案一般不唯一&#xff0c;我们主要采用下方的写法&#xff1a; 第二栗&#xff1a; 路由跳转 数据传输 CSMA/CD数据传输 2、比特率与波特率转换 四相位表示&am…

一文高端Android性能优化-总结篇

以下从几个方面来总结一下Android的性能优化&#xff1a;1&#xff1a;界面卡顿优化2&#xff1a;内存优化3&#xff1a;App启动优化界面卡顿优化Android的界面为每秒60帧&#xff0c;即必须在16ms内完成1帧的绘制&#xff0c;如果某个方法耗时过程&#xff0c;导致16ms内无法完…

OIDC OAuth2.0 协议及其授权模式详解|认证协议最佳实践系列【1】

OIDC / OAuth2.0 是一种开放的标准&#xff0c;可以帮助应用程序安全地访问用户的资源&#xff0c;而无需将用户的凭据&#xff08;如用户名和密码&#xff09;暴露给应用程序&#xff0c;我们可以通过标准协议&#xff0c;建立集中的用户目录和统一认证中心&#xff0c;将内外…

健身的时候可以戴耳机吗、最适合健身时佩戴的耳机推荐

戴着耳机锻炼&#xff0c;听着动感的音乐&#xff0c;会让你心潮澎湃&#xff0c;瞬间感觉自己力大无穷。那什么样的耳机更适合在健身房锻炼时戴呢&#xff1f;首先稳固性和舒适度一定要比较好&#xff0c;毕竟在运动的过程中老是感觉到不适或者掉落&#xff0c;那真的是很令人…

计算机组成原理:3. 系统总线

更好的阅读体验\huge{\color{red}{更好的阅读体验}}更好的阅读体验 文章目录3.1 总线的基本概念3.1.1 总线的定义3.1.2 总线的分类片内总线系统总线通信总线3.2 总线特性及性能指标3.2.1 总线特性3.2.2 总线性能指标3.2.3 总线标准3.3 总线结构3.3.1 单总线结构3.3.2 多总线结构…

AD域备份和恢复工具

Microsoft的本地Active Directory备份和恢复功能不适用于对象级备份和属性级还原。使用RecoveryManager Plus&#xff0c;您不仅可以备份和还原所有AD对象&#xff0c;还可以备份和还原其他基本AD元素&#xff0c;例如架构属性&#xff0c;组成员身份信息和Exchange属性。此外&…

字符串中<br>处理

需求&#xff1a; 后端返回的字符串中带有br换行符&#xff0c;前端需要处理行内及行尾的换行符。具体需求可分为以下两个&#xff1a; 若是字符串末尾有换行符&#xff0c;需要去掉。若是字符串内有换行符&#xff0c;有两种需求&#xff1a;①将换行符转换成逗号或其它符号&…

年薪30万,我也曾达到人生巅峰,入职字节一个月,却被无情被裁......

今年的金三银四并不像往年那样有铺天盖地的岗位和约不过来的面试机会&#xff0c;再看正在招聘的岗位&#xff0c;动不动就要求代码能力&#xff0c;能开发自动化测试平台&#xff0c;能对已有xxx框架二次开发&#xff0c;还要上机笔试&#xff0c;变态程度不亚于古代皇帝选妃了…

uni-app Some selectors are not allowed in component wxss解决方案

报错信息如下 Some selectors are not allowed in component wxss, including tag name selectors, ID selectors, and attribute selectors. 注意看尾巴&#xff0c; (./uni_modules/uni-load-more/components/uni-load-more/uni-load-more.wxss:65:29) 打开这个组件uni-lo…

工厂在智慧升级过程中,企业需要用到哪些系统呢?

今天我们优先来分析一下流程制造型企业的需求。流程制造行业智能工厂要实现智能化&#xff0c;必须包含生产管理、供应链管理、工艺管理、设备管理、质量管理等全生命周期业务流程&#xff0c;那么这个全生命周期业务流程相对应的平台就会有以下几大平台来分别实现智能化&#…

Linux驱动开发—最详细应用程序调用驱动程序解析

Linux下应用程序调用驱动程序流程 Linux下进行驱动开发,完全将驱动程序与应用程序隔开,中间通过C标准库函数以及系统调用完成驱动层和应用层的数据交换。驱动加载成功以后会在“/dev”目录下生成一个相应的文件,应用程序通过对“/dev/xxx” (xxx 是具体的驱动文件名字) 的文…

深度分析2种最常用待办事项清单法+工具实操

建待办事项清单的方法有很多种&#xff0c;你可能已经熟悉了其中一种&#xff0c;但没有了如指掌&#xff0c;恐怕也没有想过哪种方法最适合自己&#xff0c;给大家整理当下职场最常用的两个代办清单事项方法&#xff0c;只需看这两个就够你用几年了。 一、四象限法 “四象限…

全面分析前端的网络请求方式(对ajax理解的勘误)

文章目录前言AjaxFetchAxios三者关系前言 在掘金看到一篇关于ajax和fetch以及aixos的文章&#xff0c;才发现自己对ajax的理解是错误的&#xff0c;一直以为ajax就是js中xhr对象&#xff0c;把他们两之间画上了等号&#xff0c;殊不知从根本上就理解错了。 这里就不对原生的xh…

疯狂的SOVA:Android银行木马“新标杆”

2021年8月初&#xff0c;一款针对Android银行APP的恶意软件出现在人们的视野中&#xff0c;ThreatFabric 安全研究人员首次发现了这一木马&#xff0c;在其C2服务器的登录面板&#xff0c;研究人员发现&#xff0c;攻击者将其称之为SOVA。 ** SO** ** V** ** A简介** 在俄语中…

Mac Maven环境搭建安装和配置详细步骤

一、Maven简介Maven 是 Apache 软件基金会的一个开源项目,是一个优秀的项目构建工具,它用来帮助开发者管理项目中的 jar,以及 jar 之间的依赖关系、完成项目的编译、测试、打包和发布等工作。二、Mavende优点1、原来的项目中需要的jar包必须手动“复制”、”粘贴” 到WEB-INF/l…

产品经理必懂的技术知识

API 是不是经常听见程序猿小哥哥A说&#xff1a;“这个简单&#xff0c;直接调用现成的接口就可实现。 一会儿程序猿小哥哥B说&#xff1a;“你这个不行&#xff0c;我们的第三方服务接口不支持。” 此时你的心里活动&#xff1a;API ≈ 听不懂 啥子是接口哦&#xff1f;接口…

git合并分支

在复杂系统的开发过程中&#xff0c;我们经常需要通过不同的功能或环境分支来进行管理&#xff0c;那么开发阶段完成时&#xff0c;还需要进行合并&#xff0c;下边分享一下合并的流程&#xff1a;首先确保要合并的两个分支 本地分支与远程分支一致可以通过IDEA切换对应分支拉取…

【已解决】解决IDEA的maven刷新依赖时出现Connot reconnect错误

前言 小编我将用CSDN记录软件开发求学之路上亲身所得与所学的心得与知识&#xff0c;有兴趣的小伙伴可以关注一下&#xff01;也许一个人独行&#xff0c;可以走的很快&#xff0c;但是一群人结伴而行&#xff0c;才能走的更远&#xff01;让我们在成长的道路上互相学习&#…