如今不少人都在使用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
选择好要链接的数据库,若是没有你要的数据库,能够点击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目录到模板目录下,并修改相应的模板文件便可。