Springboot引入hibernate配置自动建表并进行增删改查

  • 前言
  • 一、引入依赖
  • 二、配置yml
  • 三、写代码
    • 1、新建数据库(空数据库即可,不要新建表)
    • 2、实体类
    • 3、Dao层
    • 4、Controller
  • 四、测试结果
    • 1、表已建好
    • 2、请求接口,打印SQL,插入和查询数据
  • 总结

前言

有些业务比较复杂,比如我们需要新建10张表,每张表有10个字段,如果用手工来操作,肯定非常浪费时间,而且随着代码中对实体类的修改,还要同时修改数据库表,有时候写着写着就忘了,代码改了,数据库没改,这种问题使用 hibernate 的自动建表就好啦。


一、引入依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope>
</dependency>

二、配置yml

自动建表的配置是ddl-auto,有多个属性可选
# 1. none 永远以数据表字段为准,不做任何修改
# 2. validate 加载hibernate时,验证创建数据库表结构,会和数据库中的表进行比较,不会创建新表,但是会插入新值
# 3. create 每次加载hibernate,重新创建数据库表结构,这就是导致数据库表数据丢失的原因
# 4. create-drop 加载hibernate时创建,退出是删除表结构
# 5. update 加载hibernate自动更新数据库结构(最常用的一个)

server:port: 8081
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/test?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=trueusername: rootpassword: rootjpa:hibernate:ddl-auto: update# 打印SQL语句show-sql: true

三、写代码

1、新建数据库(空数据库即可,不要新建表)

2、实体类

@Id代表这是主键,@GeneratedValue和@GenericGenerator设置主键策略是UUID
@Column可以不写,name是数据库中的字段名,如果数据库中要新建的对应字段也叫name,可以不写,columnDefinition指定字段在数据库中的类型、长度、注释等

package com.xuyijie.test.entity;import jakarta.persistence.*;
import lombok.Data;
import org.hibernate.annotations.GenericGenerator;/*** @author 徐一杰* @date 2022/9/19 17:25* @description*/
//JPA(Hibernate)的实体类注解
@Entity
//表名
@Table(name = "people")
//Lombok
@Data
public class People {//Id代表这是主键,GeneratedValue和GenericGenerator设置主键策略是UUID@Id@GeneratedValue(generator = "id")@GenericGenerator(name = "id", strategy = "uuid.hex")private String id;//Column可以不写,name是数据库中的字段名,如果数据库中要新建的对应字段也叫name,可以不写,columnDefinition指定字段在数据库中的类型、长度、注释等@Column(name = "name", columnDefinition="varchar(255) NOT NULL COMMENT '名字'")private String name;@Column(name = "sex", columnDefinition="varchar(2) NOT NULL COMMENT '性别'")private String sex;@Column(name = "age", columnDefinition="int")private Integer age;
}

3、Dao层

JpaRepository<People, String>尖括号里面填写的是实体类和实体类的主键数据类型,PeopleMapper继承JpaRepository以后,可以把PeopleMapper 注入到Service里,使用很多内置方法

package com.xuyijie.test.mapper;import com.xuyijie.test.entity.People;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;/*** @author 徐一杰* @date 2022/9/19 17:42* @description*/
@Repository
public interface PeopleMapper extends JpaRepository<People, String> {}

4、Controller

package com.xuyijie.test.controller;import com.xuyijie.test.entity.People;
import com.xuyijie.test.mapper.PeopleMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** @author 徐一杰* @date 2022/9/19 17:12* @description*/
@RestController
@RequestMapping("/test")
public class Test {@Autowiredprivate PeopleMapper peopleMapper;@GetMapping("/hello/{str}")public String Hello(@PathVariable String str){People people = new People();people.setName(str);people.setSex("男");// 这里的save和findAll都是hibernate自带的方法,里面还有很多内置方法peopleMapper.save(people);System.out.println(peopleMapper.findAll());return str;}
}

四、测试结果

1、表已建好

2、请求接口,打印SQL,插入和查询数据

使用浏览器调用接口


控制台打印出SQL语句,查询出我们刚刚插入的一条数据,主键为自动生成的UUID


总结

Springboot引入hibernate配置自动建表并进行增删改查相关推荐

  1. Online Coding开发模式 (通过在线配置实现一个表模型的增删改查功能,无需写任何代码)

    JEECG 智能开发平台. 开发模式由代码生成器转变为Online Coding模式                      (通过在线配置实现一个表模型的增删改查功能,无需一行代码,支持用户自定义 ...

  2. hibernate mysql 自动建表_配置hibernate根据实体类自动建表功能

    Hibernate支持自动建表,在开发阶段很方便,可以保证hbm与数据库表结构的自动同步. 如何使用呢?很简单,只要在hibernate.cfg.xml里加上如下代码 Xml代码update upda ...

  3. SpringMVC表单数据增删改查简易梳理(含实例代码)

    使用SpringMVC创建表单进行数据的增删改查是javaEE开发的基本功,本人根据自己最近开发的基于jeecms框架的网站平台来梳理数据增删改查的思路. 首先根据所需表单页面设计数据库,定义不同字段 ...

  4. mysql用创建的用户登陆并修改表格_MySQL 基础学习二:创建一个用户表,并增删改查...

    MySQL 基础学习二:创建一个用户表,并 增删改查 提示:MySQL 命令建议都用大写,因为小写运行时,还是翻译成大写的. 第一步,创建一个用户表 1,打开控制台,进入数据库 C:\Users\Ad ...

  5. C案例:创建顺序表并进行增删改查操作

    一.顺序表概述 顺序表是在计算机内存中以数组的形式保存的线性表,线性表的顺序存储是指用一组地址连续的存储单元依次存储线性表中的各个元素.使得线性表中在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中 ...

  6. MySQL学习总结(2) --- 数据表管理(增删改查)、使用DQL查询数据(SELECT)

    MySQL学习总结(2) - 数据表管理(增删改查).使用DQL查询数据(SELECT) 1. 数据管理(增删改查) 数据库数据管理方法: a.通过SQLyog等管理工具管理数据库数据 b. 通过DM ...

  7. 【Laravel】Laravel-admin后台框架-2创建数据表建立模块增删改查CURD(2)

    前言 前面的操作我们已经能够 安装Laravel-admin 创建数据表并生成模型 修改模型实现按业务写入数据 可以参考之前的文章 [Laravel]Laravel-admin后台框架-2创建数据表建 ...

  8. SAP abap内表分类与增删改查操作

    SAP abap内表分类与增删改查操作 1.内表的分类 1.1.标准表 (standard table ) 系统为该表每一行生成一个院级索引.填表是可以将数据附加在现有行之后,也可以插入到指定的位置, ...

  9. Hibernate无法自动建表的缘故

    说一下我的缘故:根本原因是建表的SQL语句错误,不同的版本的hibernate-core包下的不同的Dialect使用的SQL是不一样的,我开启了show-sql后,控制台打印如下: Hibernat ...

  10. Vue 脚手架结合 SpringBoot 构建前后端分离入门项目(实现增删改查)

    Vue 脚手架构建前后端分离项目 项目简介与预览 数据库建表 主要模块代码 index.js 路由代码 User.vue 用户组件 RAP2 创建接口进行测试 切换路由组件的显示: this.$rou ...

最新文章

  1. SSH实现新闻管理系统
  2. SparkHiveSQL中Join操作的谓词下推?
  3. ipone怎么没有科学计算机,ipone7与ipone8其实根本没什么区别呀
  4. (DFS)zoj1008-Gnome Tetravex
  5. 关于高效、高质和高产
  6. 上传文件到服务器端后进一步推送到sftp服务器
  7. BZOJ2689 : 堡垒
  8. Publication的 immediate_sync 属性
  9. LPC1768 Flash 存储器加速模块
  10. excel数据导入matlab失败,Excel数据导入matlab
  11. 使用Mac打开mht格式文件
  12. VC++实现QQ消息群发
  13. paintComponent方法的一些小把戏
  14. 计算机常用键的作用,键盘功能键大全2017 电脑键盘常用按键功能详解
  15. IOl数据流中的字节流
  16. 基于ABP的AppUser对象扩展
  17. SWIFT电文 MT940客户对账单 报文格式说明
  18. C语言头昏,眩晕、头晕、头昏混为一谈?这可不是一种病症
  19. 央视《对话》:家长课堂
  20. 小白程序员的学习路线

热门文章

  1. HTML中的 meta 标签
  2. 机器学习-朴素贝叶斯(高斯、多项式、伯努利)
  3. 【域名】查看MX记录是否生效
  4. 数据库中什么是候选码,主码,主属性和非主属性
  5. 钢琴节奏时值测试软件,钢琴技巧:弹奏时值较长双音的技巧——自网络
  6. linux删除卸载npm,卸载安装node npm (Mac linux )
  7. C++ 惯用法之 Nifty Counter
  8. matlab 三角函数 积化和差,三角函数积化和差与和差化积公式
  9. 三角函数中的和差化积公式编辑方法
  10. [一步一步MVC]第四回:漫谈ActionLink,有时“胡搅蛮缠”