如今不少人都在使用Spring Boot+MyBatis的方案,但使用Spring Boot+JPA(Hibernate)的也有很多。php
Jpa (Java Persistence API) 是 Sun 官方提出的 Java 持久化規範。它爲 Java 開發人員提供了一種對象/關聯映射工具來管理 Java 應用中的關係數據。它的出現主要是爲了簡化現有的持久化開發工做和整合 ORM 技術,結束如今 Hibernate,TopLink,JDO 等 ORM 框架各自爲營的局面。Spring Boot中默認使用的就是Hibernate。java
爲了方便使用java對象操做數據庫,JPA實現了一套java類和數據表的映射機制,但須要咱們要建立與表相對應的實體類,也就是一張表要建一個類,類名對應表名,類屬性對應表字段。要是表太多,光是這個實體類就會讓人寫到發狂。這麼麻煩事確定有人想到使用自動生成的方式,如今就來總結一下有哪些方法能夠快速生成JPA實體類。mysql
若是你的項目不是JPA項目,首先要添加JPA支持。右鍵點擊項目->選擇configure->Convert JPA Projectgit
勾選JPA,而後下一步選擇好要鏈接的數據庫,若是沒有你要的數據庫,能夠點擊Add connection添加數據庫鏈接,以後點擊完成,就完成的JPA的支持 github
對於有JPA支持的項目,咱們右鍵點擊項目,菜單中會有的JPA Tools選項,它能夠從實體類生成表,也能夠表生成實體類,選擇從表生成實體類,進入實體類生成配置界面sql
選擇數據庫以及要生成實體類的表數據庫
還能夠自定義每一個表,每一個字段的類型和名稱最後點擊完成,就能夠生成實體類了session
對於使用IDEA工具的人,也是有相應的工具能夠生成實體類的app
在IDEA中,依次點擊File -> Project Structure,彈出配置界面。再點擊Modules - + - JPA,最後點擊Apply - OK框架
鏈接數據庫 點擊database窗口,添加數據源
點擊Persistence,一步步完成操做,就能夠生成實體啦
以上兩種工具生成的實體類,結構可能會有些許的不一樣,若是項目須要在兩個工具之間切換,通用性就會有一些問題。那麼有沒有一種更通用的方法呢,答案是有的,就是使用maven插件生成。
使用Maven插件生成實體,和IDE無關,能夠定製更多的生成信息,好比字段映射、生成註釋等,更加的靈活。
在pom.xml中添加配置
<!--實體生成插件,運行hibernate-tools:hbm2java-->
<plugin>
<groupId>com.github.stadler</groupId>
<artifactId>hibernate-tools-maven-plugin</artifactId>
<version>0.1.1</version>
<executions>
<execution>
<id>Entity generation</id>
<phase>deploy</phase>
<goals>
<goal>hbm2java</goal>
</goals>
</execution>
</executions>
<configuration>
<!--模板路徑,若是有定製模板,須要指定-->
<!--<templatePath>${project.basedir}/src/main/resources</templatePath>-->
<!-- Defaults: -->
<outputDirectory>${project.basedir}/src/main/java/</outputDirectory>
<!-- Hibernate數據庫鏈接屬性文件 -->
<configFile>src/main/resources/hibernate.xml</configFile>
<!-- 反轉規則配置文件,不是必須的 -->
<!--<revengFile>src/main/resources/reveng.xml</revengFile>-->
<!-- 生成實體類默認包 -->
<packageName>com.example.loope.entity</packageName>
<detectManyToMany>true</detectManyToMany>
<detectOneToOne>true</detectOneToOne>
<detectOptimisticLock>true</detectOptimisticLock>
<createCollectionForForeignKey>true</createCollectionForForeignKey>
<createManyToOneForForeignKey>true</createManyToOneForForeignKey>
<!-- 若是設置爲true則生成JPA註解,若設置爲false則生成hbml.xml -->
<ejb3>true</ejb3>
<jdk5>true</jdk5>
</configuration>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.46</version>
</dependency>
</dependencies>
</plugin>
複製代碼
在resource下添加hibernate.xml和reveng.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- property 元素用於配置Hibernate中的屬性鍵:值 -->
<!-- hibernate.connection.driver_class : 鏈接數據庫的驅動 -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- hibernate.connection.username : 鏈接數據庫的用戶名 -->
<property name="hibernate.connection.username">root</property>
<!-- hibernate.connection.password : 鏈接數據庫的密碼 -->
<property name="hibernate.connection.password">123456</property>
<!-- hibernate.connection.url : 鏈接數據庫的地址,路徑 -->
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/loope</property>
<!-- 數據庫方言配置org.hibernate.dialect.MySQLDialect (選擇最短的) -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
</session-factory>
</hibernate-configuration>
複製代碼
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-reverse-engineering PUBLIC "-//Hibernate/Hibernate Reverse Engineering DTD 3.0//EN" "http://hibernate.org/dtd/hibernate-reverse-engineering-3.0.dtd">
<hibernate-reverse-engineering>
<type-mapping>
<!--這裏配置須要映射的類型-->
<sql-type jdbc-type="DATE" hibernate-type="java.util.Date"/>
<sql-type jdbc-type="TIMESTAMP" hibernate-type="java.util.Date"/>
<sql-type jdbc-type="NUMERIC" hibernate-type="java.lang.Double"/>
<sql-type jdbc-type="DECIMAL" hibernate-type="java.lang.Double" />
</type-mapping>
</hibernate-reverse-engineering>
複製代碼
如今運行hibernate-tools:hbm2java便可生成實體
若是想要更多的自定義生成,能夠下載hibernate-tools的jar包,拷貝里面的pojo目錄到模板目錄下,並修改相應的模板文件便可。