1. 程式人生 > >springboot+hibernate+mysql自動建表

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
>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

注意:最關鍵的是最後兩個配置,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修改表結構,但不會建立新表。

  • 建立Model實體類
package com.zslin.model;

import javax.persistence.*;

/**
 * Created by 鍾述林 [email protected] 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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65

注意:

1、 在主建Id上需要加註釋:@Id@GeneratedValue(strategy = GenerationType.AUTO)才會自動增長

2、 在需要重新設定表字段名的屬性上加註釋@Column(name = "欄位名")即可。

3、 在類名上添加註釋:@Entity@Table(name = "t_user")t_user是表名

  • 啟動專案

啟動專案後在study05資料庫中將出現t_user的資料表,且存在相應的表字段。

相關推薦

springboot+hibernate+mysql自動

引入Maven依賴包<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-j

IDEA建立springboot+hibernate+oracle自動遇到的問題

按照貫通的搭建模式  maven空專案+子模組,發現配置好 oracle  ,jpa依賴,yml檔案 配置好,實體類建好 ,自動建表失敗  後來發現原因  springboot載入時 是 預設當前路徑 或者上一級路徑下 ,  而springboot 專案是三維定位 ,

hibernate關閉自動

表結構和資料總是在程式執行的時候無端的修改,折騰了好長時間,查了很長時間hibernate的資料庫對映檔案和介面程式,始終沒有發現有什麼錯誤,到最後才發現了它!            <prop

hibernate無法自動的原因

假如啟動hibernate,並且資料庫已經建好; 假如啟動的時候報錯,專案啟動失敗,大多數情況是不能自動建表,可以根據報錯資訊,解決問題; 這裡我要說的是另外一種情況,假如專案啟動沒有報錯,一切正常,但是資料庫依然沒有自動建表,這裡很有可能的原因是資料庫驅動版本過低的原因; 大家可以把搞個新點的資料庫驅動版

SpringbootHibernate自動Mysql

本文章來自【知識林】 引入Maven依賴包 <dependency> <groupId>org.springframework.boot</groupI

出現 Unable to instantiate default tuplizer,hibernate自動失敗,原因是在實體類中聲明瞭成員變數describe,而describe是mysql關鍵字

歡迎使用Markdown編輯器寫部落格 本Markdown編輯器使用StackEdit修改而來,用它寫部落格,將會帶來全新的體驗哦: Markdown和擴充套件Markdown簡潔的語法 程式碼塊高亮 圖片連結和圖片上傳 LaTex數學公式 UML序列圖和

Hiberntate不能自動的問題:hibernate.(*)

寫代碼 dial ddl ber pro nta auto OS div 今天寫代碼的時候發現啟動服務器之後不能自動建表了?wtf什麽鬼?最後發現了這個問題: hbm2ddl.auto前的hibernate.省略之後出的問題,可能是bug之後的版本應該會修復 <pro

hibernate不能自動:MySQLSyntaxErrorException: Table '' doesn't exist

mysql mysql5 nat nta exist ble property cep exception 修改前: <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect<

hibernate通過pojo自動操作

1. 多對一 如球員和球隊的關係:多個球員在同一個球隊中。 1.1 類圖 TeamPojo:屬性 + set/get public class TeamPojo{ private Integer teamId; private String teamName; private String team

springBoot使用jpa不自動問題

目錄結構 實體類: package test; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id;

hibernate自動 屬性填update 會報錯

自動建表 屬性填update 會報錯的解決方法 hibernate入門學習時,JUnit單元測試時,報錯 顯示以下錯誤: java.lang.ClassCastException: java.util.Collections$EmptyIte

Hibernate自動(使用DDL語句)

Gd上次和大家談到使用DDL語句實現自動建表失敗的問題,過了幾天再回頭看果然思路就變得清晰許多,原來是xxx.hbm.xml檔案的配置上出了問題,因為上次沒有用Junit進行測試,所以沒有看明白問題的描述,這裡不得不說一句,Junit真是個好東西,emmmmmm。Junit測

hibernate自動到資料庫及spring下自動到資料庫

Hibernate支援自動建表,在開發階段很方便,可以保證hbm與資料庫表結構的自動同步。 如何使用呢?很簡單,只要在hibernate.cfg.xml里加上如下程式碼 Xml程式碼<prope

Hibernate 不報錯卻不能自動

網上說有各種原因,什麼dialog配置不對了、jar包版本不相容了,但是我的原因卻不是。 之前配置檔案如下: <property name="hibernateProperties">

hibernate自動設定欄位型別為資料庫中為timestamp型別

1:專案需要,欄位應該設計為timestamp型別,但自動建表後總是被設定為datetime(當時用的資料庫為sqlserver) Google後,在配置檔案(Xxx.hbm.xml)中column新增 sql-type="timestamp" default="CUR

Hibernate不能自動

這是我第一天學習hibernate遇到的問題,糾結了一天終於解決了。 專案功能很簡單,就是儲存一條資料到資料庫。我完全照著尚矽谷佟剛老師的hibernate4.0的視訊寫的,結果執行一直出現找不到表的問題。 先看JUnit的Failure Trace報的錯 org.hibe

hibernate 根據註解好的實體類 自動

首先搭好框架   例如ssh然後  applicationContent.xml寫上這些<?xml version="1.0" encoding="UTF-8"?>    <property name="driverClass" value="com.mys

java中根據hibernate配置檔案自動

1、對與java專案,做資料庫遷移時,都會用的資料指令碼。 2、當引入hibernate時,可以建立資料庫表的配置檔案。可以根據表的配置檔案自動在資料庫建表。(資料庫要預先建立好,因為hibernate只會建表,不會建庫) 步驟: 1)、在配置檔案 hibernate.cf

在spring中配置hibernate.hbm2ddl.auto=true自動

今天 在spring中配置了 hibernate 的hibernate.hbm2ddl.auto 屬性為update ,配置資訊如下:     <property name="hibernateProperties"> <value> <!--

hibernate.hbm2ddl.auto為update無法自動

mysql5之前hibernate.dialect為org.hibernate.dialect.MySQLInnoDBDialect。 mysql5之後為org.hibernate.dialect.My