Springboot 之 Hibernate自动建表(Mysql)

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。

 

  • 引入Maven依赖包
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId>
</dependency>

spring-boot-starter-data-jpa中已经包含了Hibernate所需要的相关依赖,所以只需要引入Jpa的依赖即可。

  • 创建配置文件

application.properties中加一行:spring.profiles.active=dev

application-dev.properties配置文件的内容如下:

server.port=80# Hibernate 相关配置## 方言
#hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
## 显示Sql
hibernate.show_sql=true
## 自动建表方式
#hibernate.hbm2ddl.auto= update
## 自动扫描的包前缀
entitymanager.packagesToScan= com.zslin## 数据库连接
spring.datasource.url=jdbc:mysql://localhost:3306/study05?\useUnicode=true&characterEncoding=utf-8&useSSL=true&autoReconnect=true## 用户名
spring.datasource.username=root## 密码
spring.datasource.password=123## 数据库驱动
spring.datasource.driver-class-name=com.mysql.jdbc.Driver## 建表方式
spring.jpa.properties.hibernate.hbm2ddl.auto=update# 方言
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect

注意:最关键的是最后两个配置,spring.jpa.properties.hibernate.hbm2ddl.auto=update而不是hibernate.hbm2ddl.auto=update,使用了Jpa所以键名称需要有相应调整,否则不会自动建表

spring.jpa.properties.hibernate.hbm2ddl.auto有几种配置:

  • create:每次加载Hibernate时都会删除上一次生成的表,然后重新生成新表,即使两次没有任何修改也会这样执行,这就导致每次启动都是一个新的数据库,也是导致数据丢失的重要原因。

  • create-drop:每次加载Hibernate时都会生成表,但当SessionFactory关闭时,所生成的表将自动删除。

  • update最常用的属性值,第一次加载Hibernate时创建数据表(前提是需要先有数据库),以后加载HIbernate时只会根据model更新,即使model已经删除了某些属性,数据表也不会随之删除字段。

  • validate:每次加载Hibernate时都会验证数据表结构,只会和已经存在的数据表进行比较,根据model修改表结构,但不会创建新表。

具体配置可参考文章《Springboot 之 文件结构和配置文件》

  • 创建Model实体类
package com.zslin.model;import javax.persistence.*;/*** Created by 钟述林 393156105@qq.com on 2016/10/18 17:15.*/
@Entity
@Table(name = "t_user")
public class User {@Id@GeneratedValue(strategy = GenerationType.AUTO)private Integer id;@Column(name = "user_name")private String userName;private String password;@Column(name = "nick_name")private String nickName;private String email;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getNickName() {return nickName;}public void setNickName(String nickName) {this.nickName = nickName;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}
}

注意:

1、 在主建Id上需要加注释:@Id@GeneratedValue(strategy = GenerationType.AUTO)才会自动增长

2、 在需要重新设置表字段名的属性上加注释@Column(name = "字段名")即可。

3、 在类名上添加注释:@Entity@Table(name = "t_user")t_user是表名

  • 启动项目

启动项目后在study05数据库中将出现t_user的数据表,且存在相应的表字段。

示例代码:https://github.com/zsl131/spring-boot-test/tree/master/study05

 

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

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

相关文章

Spring全家桶面试真题

文章目录1. Spring Boot1.1 说说你对Spring Boot的理解1.2 Spring Boot Starter有什么用&#xff1f;1.3 介绍Spring Boot的启动流程1.4 Spring Boot项目是如何导入包的&#xff1f;1.5 请描述Spring Boot自动装配的过程1.6 说说你对Spring Boot注解的了解2. Spring2.1 请你说说…

WSDL测试webservice接口记录

收到一个事情&#xff0c;需要对接第三方API&#xff0c;对方给了个service&#xff0c;看了一下&#xff0c;原来是webservices的。 上一次测试webervice的接口&#xff0c;还是至少八九年前的时候了&#xff0c;这种相对比较老旧的也好久不在使用。 于是&#xff0c;简单搞了…

idea窗口下方滚动条不明显设置

在使用idea时&#xff0c;下方的滚动条老是显示不明显&#xff0c;每次点击拖拽都很费劲&#xff0c;在网上找了很多相关设置&#xff0c;最后确定了一个最好的办法解决问题&#xff1a; Shift &#xff08;上档&#xff09; 鼠标滚动&#xff0c;这样就可以横向翻滚了&#…

把握本质规律——《数学之美》作者吴军

无论是互联网&#xff0c;还是手机、电视&#xff0c;现代通信都遵循信息论的规律&#xff0c;整个信息论的基础都是数学。搜索引擎、语音识别、机器翻译也都是我们生活中离不开的技术&#xff0c;数学也是解决这些问题的最好工具。在《浪潮之巅》出版后&#xff0c;吴军将蕴含…

Hibernate4 注解方法说明

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1.类级别注解 Entity 映射实体类 Table 映射数句库表 Entity(name"tableName") - 必须&#xff0c;注解将一个类声明…

消息队列常见面试题

文章目录2. 消息队列2.1 MQ有什么用&#xff1f;2.2 说一说生产者与消费者模式2.3 消息队列如何保证顺序消费&#xff1f;2.4 消息队列如何保证消息不丢&#xff1f;2.5 消息队列如何保证不重复消费&#xff1f;2.6 MQ处理消息失败了怎么办&#xff1f;2.7 请介绍消息队列推和拉…

Mybatis 详解--- 一级缓存、二级缓存

2019独角兽企业重金招聘Python工程师标准>>> Mybatis 为我们提供了一级缓存和二级缓存&#xff0c;可以通过下图来理解&#xff1a; ①、一级缓存是SqlSession级别的缓存。在操作数据库时需要构造sqlSession对象&#xff0c;在对象中有一个数据结构&#xff08;Hash…

我的nabcd

我们组要做的软件是一款MP3播放软件&#xff0c;名字叫TDG音乐 N&#xff08;need需求&#xff09;&#xff0c;由于现在版权越来越被重视&#xff0c;许多播放软件里面的大部分歌曲都是收费的&#xff0c;不想花钱又想听可怎么办呢&#xff0c;只能在网上找免费资源&#xff0…

【C/C++和指针】深度解析---指针与数组 【精华】

一&#xff0c;引例子 二维数组可以使用指向数组的指针代替&#xff0c;而指针数组才可以用指向指针的指针代替。 [html] view plaincopy#include<iostream> using namespace std; void main() { char *a[]{"Hello","the","World&q…

Redis常见面试题详解

文章目录1. Redis1.1 Redis可以用来做什么&#xff1f;1.2 Redis和传统的关系型数据库有什么不同&#xff1f;1.3 Redis有哪些数据类型&#xff1f;1.4 Redis是单线程的&#xff0c;为什么还能这么快&#xff1f;1.5 Redis在持久化时fork出一个子进程&#xff0c;这时已经有两个…

IntelliJ 创建main函数、for循环、输出语句快捷键

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 今天偶然发现了IntelliJ中 创建main函数的快捷键&#xff0c;依次还有for循环&#xff0c;System.out.println(); 在编写代码的时候直接…

CentOS新增用户并授予sudo权限

2019独角兽企业重金招聘Python工程师标准>>> 新增用户 添加用户useradd demo设置用户密码passwd demo授予sudo权限 输入以下命令&#xff0c;编辑sudoers配置&#xff1a;visudo找到以下行root ALL(ALL) ALL增加以下内容&#xff1a;demo ALL(ALL) ALL保存后登录dem…

跨站脚本功攻击,xss,一个简单的例子让你知道什么是xss攻击

跨站脚本功攻击&#xff0c;xss&#xff0c;一个简单的例子让你知道什么是xss攻击 一、总结 一句话总结&#xff1a;比如用户留言功能&#xff0c;用户留言中写的是网页可执行代码&#xff0c;例如js代码&#xff0c;然后这段代码在可看到这段留言的不同一户的显示上就会执行。…

用业绩建立信任

当年从香港到美国&#xff0c;对于中学毕业的郭尊华来说&#xff0c;算是一个失败。他尽管家境普通&#xff0c;但因为成绩不佳进不了香港的大学&#xff0c;不得不远赴美国读书。在课余做过挖地、当侍者等多份工作的他&#xff0c;在大三的时候终于得到一份初级工程师的工作。…

idea 快捷键 小结

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。1.setting 打开快捷键&#xff1a;ctrl alt s 在 file - setting 中。 2.回到默认设置&#xff1a;删除如下路径的文件夹 C:\Users…

Jenkins常用插件

Generic Webhook Trigger Plugin触发器webhook用户触发构建Deploy to container Plugin部署到tomcatGradle Plugin Gradle插件构建项目Maven Plugin Maven插件构建项目Git Plugin Git插件克隆项目GitHub plugin GitHub插件集成githubSSH Slaves plugin SSH插件用于远程登录Buil…

spark广播变量 和 累加器

1 为什么使用广播变量 和 累加器 变量存在的问题&#xff1a;在spark程序中&#xff0c;当一个传递给Spark操作(例如map和reduce)的函数在远程节点上面运行时&#xff0c;Spark操作实际上操作的是这个函数所用变量的一个独立副本。这些变量会被复制到每台机器上&#xff0c;并且…

分布式常见面试题详解

文章目录1. 分布式1.1 什么是CAP原则&#xff1f;1.2 说一说你对高并发的理解1.3 如何实现分布式存储&#xff1f;1.4 说一说你对分布式事务的了解1.5 分布式系统如何保证最终一致性&#xff1f;1.6 谈谈你对分布式的单点问题的了解1.7 HTTP和RPC有什么区别&#xff1f;1.7 HTT…

C11标准委员会成员解读C语言新标准

导读&#xff1a;C语言国际标准新的新草案之前已经公布&#xff0c;新标准提高了对C的兼容性&#xff0c;并将新的特性增加到C语言中。此外支持多线程的功能也受到了开发者的关注&#xff0c;基于ISO/IEC TR 19769:2004规范下支持Unicode&#xff0c;提供更多用于查询浮点数类型…

如何将拷贝过来的数据 *.ibd 文件生效

1.将拷贝的数据文件 "qqq.idb"放在自己的数据库中. 一般存放在 mysql/ data/ databasename 下 2. "qqq.idb" 改个名字-->"qqq--.idb", 主要是避免冲突&#xff01; 3.执行 create table qqq(...) 语句&#xff0c;此时除了会生成一个 qqq…