Intellij IDEA 如何通过数据库表生成带注解的实体类(图文详细教程)
在Idea中连接数据库并生成实体类(mybatis逆向生成实体类)

在Idea中连接数据库并⽣成实体类(mybatis逆向⽣成实体类)
1.连接数据库
(1)按下图,点击view-----选择tool windows----------选择database并点击
(2)弹出Database窗⼝
点击加号------------选择data source---------------选择想添加的数据库并点击
(3)弹出DataSources and Drivers窗⼝
分别填写画圈的⽅框。
host-----写ip地址
Database-------写数据库名称
user-------写账号
Password------写密码
填好之后,可以点击⼀下test Connection,如果连接成功,那么test Connection按钮的右边会显⽰⼀句话提⽰连接成功。
连接成功后就点击右下⾓的OK。
(4)点击OK后出现如下结果,Database下出现⼀个数据库。
(5)添加hibernate 配置⽂件
(6)choose Data Source
choose Data Source ------------------------点击右边下三⾓选择数据库
Package----------------------选择项⽬中的某个包,⽣成的实体将会变成⼀个类⽂件放在那个包下
第三部分显⽰的是数据库的表,每个表⽣成⼀个实体,勾选,想要⽣成实体的表,然后按右下⾓OK即可。
这样就可以⽣成实体了。
idea生成实体类的方式

idea生成实体类的方式
在IntelliJ IDEA 中,可以使用以下几种方式生成实体类:
使用代码生成器:
打开你的数据库连接。
在项目视图中,右击你的数据库连接,选择“Generate Code”或“从数据库生成代码”。
选择要生成代码的表。
选择生成的代码类型(例如,Java POJO类)。
点击“Generate”或“OK”开始生成。
使用Live Templates:
打开一个Java 类文件。
在编辑器中输入sget(或者其他你设定的缩写),然后按Tab 键。
这将自动插入一个获取实体的方法模板。
你可以根据需要自定义这个模板。
使用注解:
在Java 类中,你可以使用JPA 注解来定义实体类和其属性。
例如,@Entity、@Table、@Column 等。
使用Hibernate Tools:如果你使用Hibernate 作为ORM 工具,Hibernate Tools 可以帮助你从数据库生成实体类和映射文件。
使用外部插件:有一些插件,如JBoss Tools,提供了更多的代码生成和实体管理功能。
手动编写:虽然这不是自动生成的方式,但对于许多开发者来说,手动编写实体类可能是最直接和可控的方法。
无论你选择哪种方法,都应确保生成的实体类满足你的项目需求,并考虑性能、可读性和可维护性等因素。
idea 创建类注释模板

idea 创建类注释模板
在IntelliJ IDEA 中,你可以创建自定义的类注释模板,这样在创建新的类时,IDEA 就会自动插入这些注释。
以下是如何做到这一点的步骤:
1. 打开IntelliJ IDEA,点击`File`,然后选择`Settings`(Windows/Linux)或`Preferences`(macOS)。
2. 在弹出的对话框中,选择`Editor` -> `File and Code Templates`。
3. 在右侧的模板列表中,点击`+` 按钮来创建一个新的模板。
4. 在"Name" 字段中,输入你的模板名称,例如"Class Comment"。
5. 在"Template text" 字段中,输入你的模板内容。
例如:
```java
/**
* ${NAME}
*
* @since ${YEAR}
*/
```
在上面的例子中,`${NAME}` 和`${YEAR}` 是特殊的占位符,它们会被实际的值所替换。
6. 点击`OK` 保存你的模板。
现在,每当你创建一个新的类时,IDEA 就会自动插入你定义的
注释模板。
如果你要在现有文件中插入这个模板,你可以使用
`Generate` 功能(快捷键`Alt + Insert`)。
在弹出的菜单中,选择`Comment/Uncomment`,然后选择你定义的模板即可。
idea自动生成hibernate实体类

idea⾃动⽣成hibernate实体类1. DataBase -> + -> Data Source -> MySQL2. 填写 host、port、URL等信息后 -> TestConection(注:第⼀次测试连接需先安装插件)测试连接:成功 3.4.添加hibernate配置⽂件<?xml version='1.0' encoding='utf-8'?><!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD//EN""/dtd/hibernate-configuration-3.0.dtd"><hibernate-configuration><session-factory><!-- 主要三部分配置--><!-- 1.配置数据库信息,必须的--><property name="connection.url">jdbc:mysql://192.168.0.108:3306/ecai?serverTimezone=Asia/Shanghai</property> <property name="connection.driver_class">com.mysql.cj.jdbc.Driver</property><property name="ername">root</property><property name="connection.password">root</property><!-- 2.配置hibernate信息,可选的--><!-- 输出底层的sql语句--><property name="hibernate.show_sql">true</property><!-- 对底层sql进⾏格式化--><property name="hibernate.format_sql">true</property><!--配置数据的⽅⾔,如mysql中limitoracle的rownum--><property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property><property name="hibernate.current_session_context_class">thread</property><!-- 3.把映射⽂件配置到核⼼⽂件中,必须的--></session-factory></hibernate-configuration>hibernate.cfg.xml5. 添加hibernate配置⽂件成功后,左下⾓将出现 Persistence窗⼝,右击第⼀⾏的项⽬名6. 7.例:⽣成后的实体类package orm.entity;import javax.persistence.*;import java.math.BigDecimal;/*** <p>** </p>** @author: zeng* @since: 2020-03-26*/@Entity@Table(name = "merchant", schema = "ecai", catalog = "") public class MerchantEntity {private int id;private String code;private String account;private String password;private String nickname;private BigDecimal balance;private int status;private int roleId;private String secretKey;private String registTime;private String loginTime;private String loginIp;private String loginPlat;private String ips;private String phone;private String email;private String qq;private String wechat;@Id@Column(name = "id")public int getId() {return id;}public void setId(int id) {this.id = id;}@Basic@Column(name = "code")public String getCode() {return code;}public void setCode(String code) {this.code = code;}@Basic@Column(name = "account")public String getAccount() {return account;}public void setAccount(String account) {this.account = account;}@Basic@Column(name = "password")public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}@Basic@Column(name = "nickname")public String getNickname() {return nickname;}public void setNickname(String nickname) {this.nickname = nickname;}@Basic@Column(name = "balance")public BigDecimal getBalance() {return balance;}public void setBalance(BigDecimal balance) {this.balance = balance;}@Column(name = "status")public int getStatus() {return status;}public void setStatus(int status) {this.status = status;}@Basic@Column(name = "role_id")public int getRoleId() {return roleId;}public void setRoleId(int roleId) {this.roleId = roleId;}@Basic@Column(name = "secret_key")public String getSecretKey() {return secretKey;}public void setSecretKey(String secretKey) {this.secretKey = secretKey;}@Basic@Column(name = "regist_time")public String getRegistTime() {return registTime;}public void setRegistTime(String registTime) {this.registTime = registTime;}@Basic@Column(name = "login_time")public String getLoginTime() {return loginTime;}public void setLoginTime(String loginTime) {this.loginTime = loginTime;}@Basic@Column(name = "login_ip")public String getLoginIp() {return loginIp;}public void setLoginIp(String loginIp) {this.loginIp = loginIp;}@Basic@Column(name = "login_plat")public String getLoginPlat() {return loginPlat;}public void setLoginPlat(String loginPlat) {this.loginPlat = loginPlat;}@Basic@Column(name = "ips")public String getIps() {return ips;}public void setIps(String ips) {this.ips = ips;}@Basic@Column(name = "phone")public String getPhone() {return phone;}public void setPhone(String phone) {this.phone = phone;}@Basic@Column(name = "email")public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}@Basic@Column(name = "qq")public String getQq() {return qq;}public void setQq(String qq) {this.qq = qq;}@Basic@Column(name = "wechat")public String getWechat() {return wechat;}public void setWechat(String wechat) {this.wechat = wechat;}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;MerchantEntity that = (MerchantEntity) o;if (id != that.id) return false;if (status != that.status) return false;if (roleId != that.roleId) return false;if (code != null ? !code.equals(that.code) : that.code != null) return false;if (account != null ? !account.equals(that.account) : that.account != null) return false;if (password != null ? !password.equals(that.password) : that.password != null) return false;if (nickname != null ? !nickname.equals(that.nickname) : that.nickname != null) return false;if (balance != null ? !balance.equals(that.balance) : that.balance != null) return false;if (secretKey != null ? !secretKey.equals(that.secretKey) : that.secretKey != null) return false;if (registTime != null ? !registTime.equals(that.registTime) : that.registTime != null) return false;if (loginTime != null ? !loginTime.equals(that.loginTime) : that.loginTime != null) return false;if (loginIp != null ? !loginIp.equals(that.loginIp) : that.loginIp != null) return false;if (loginPlat != null ? !loginPlat.equals(that.loginPlat) : that.loginPlat != null) return false;if (ips != null ? !ips.equals(that.ips) : that.ips != null) return false;if (phone != null ? !phone.equals(that.phone) : that.phone != null) return false;if (email != null ? !email.equals(that.email) : that.email != null) return false;if (qq != null ? !qq.equals(that.qq) : that.qq != null) return false;if (wechat != null ? !wechat.equals(that.wechat) : that.wechat != null) return false;return true;}@Overridepublic int hashCode() {int result = id;result = 31 * result + (code != null ? code.hashCode() : 0);result = 31 * result + (account != null ? account.hashCode() : 0);result = 31 * result + (password != null ? password.hashCode() : 0);result = 31 * result + (nickname != null ? nickname.hashCode() : 0);result = 31 * result + (balance != null ? balance.hashCode() : 0);result = 31 * result + status;result = 31 * result + roleId;result = 31 * result + (secretKey != null ? secretKey.hashCode() : 0);result = 31 * result + (registTime != null ? registTime.hashCode() : 0);result = 31 * result + (loginTime != null ? loginTime.hashCode() : 0);result = 31 * result + (loginIp != null ? loginIp.hashCode() : 0);result = 31 * result + (loginPlat != null ? loginPlat.hashCode() : 0);result = 31 * result + (ips != null ? ips.hashCode() : 0);result = 31 * result + (phone != null ? phone.hashCode() : 0);result = 31 * result + (email != null ? email.hashCode() : 0);result = 31 * result + (qq != null ? qq.hashCode() : 0);result = 31 * result + (wechat != null ? wechat.hashCode() : 0);return result;}}Bean。
IntelliJIDEA下自动生成Hibernate映射文件以及实体类

IntelliJIDEA下⾃动⽣成Hibernate映射⽂件以及实体类1、构建项⽬并添加项⽬结构配置以及配置初始参数1.1、如图将基本的架⼦搭建好1.2、点击File,弹出的菜单中点击Project Structure;1.3、点击左侧的Modules,再点击“+”号,再在弹出的菜单中选择Hibernate;1.4、在这时,项⽬中多出了⼀个Hibernate,点击Hibernate,再点击“+”号,选择hibernate.hbm.xml;1.5、弹出的窗⼝中选择Hibernate的版本,然后点击OK;1.6、点击OK后在原来1.4步骤的窗⼝中的Apply按妞应⽤到项⽬;1.7、这时项⽬架⼦中多出了⼀个名为hibernate.hbm.xml的配置⽂件;1.8、在hibernate.hbm.xml中配置如下配置;<?xml version='1.0' encoding='utf-8'?><!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD//EN""/dtd/hibernate-configuration-3.0.dtd"><hibernate-configuration><session-factory><!--数据库连接url配置--><property name="connection.url">jdbc:mysql://localhost:3306/SSHBlog?useUnicode=true&characterEncoding=utf8&useSSL=true&zeroDateTimeBehavior=convertToNull</property> <!--数据库驱动配置--><property name="connection.driver_class">com.mysql.jdbc.Driver</property><!--数据库⽤户名配置--><property name="ername">root</property><!--数据库密码配置--><property name="connection.password"></property><!-- DB schema will be updated if needed --><!-- <property name="hbm2ddl.auto">update</property> --></session-factory></hibernate-configuration>1.9、第⼀步配置完毕。
IntellijIDEA通过数据库表生成带注解的实体类详细步骤

IntellijIDEA通过数据库表⽣成带注解的实体类详细步骤前⾔:idea 功能很强⼤,以前不知道有这样的提升⼯作效率的⽅法,虽然有的⼯具确实可以直接⽣成实体类,mapper⽂件,还有dao接⼝,但是个⼈觉得涉及到复杂业务还是只⽣成实体类⽐较好,后⾯部分就⾃⼰搞定就可以了。
⼀、连接数据库打开项⽬:1、点击右侧的datesource图标,要是没有该图标,请去⾃⾏百度2、点击 + 号3、选择 datasource4、选择 mysql1、填写⼀个连接名,随便填什么都⾏2、不⽤选择,默认就⾏3、填写数据库连接的 IP地址,⽐如本地数据库可以填写:localhost或者127.0.0.14、填写数据库开放的端⼝号,⼀般没设置的话默认都是33065、填写你需要连接的数据库名6、填写数据库的⽤户名7、填写数据库密码8、这⾥会有⼀个驱动需要点击下载,图中是已经下载好了9、填写⾃⼰的数据库连接url,然后可以点击9所在按钮进⾏测试连接,本地连接失败检查是否开启了mysql服务连接好了如上图所⽰,可以看到⾃⼰的数据库和表,选择⼀个表右键,⽹上教程⼀般到这⾥结束,都是选择说Generate POJOs.groovy,然后在弹出窗⼝选择需要⽣成的⽂件夹所在即可。
我选择⼀张表进⾏⽣成⽰例如下:表明去除了“_”然后以驼峰⽅式⽣成了类名,⽽且开始的package 路径也不对,重点是没有注释,没有注释,没有注释!⽹上搜了⼀些⽅法,都不太⾏,要不就是到处报错,没辙只能⾃⼰瞎琢磨。
没想到最后也不难,下⾯就是实现:右键选择表,在选择Generate POJOs.groovy 的下⾯那⼀项:进来只有Generate POJOs.groovy,右键新建另外⼀个⽐如我的叫做:Generate MyPOJOs.groovy,⾥⾯内容如下:import com.intellij.database.model.DasTableimport com.intellij.database.model.ObjectKindimport com.intellij.database.util.Caseimport com.intellij.database.util.DasUtilimport java.io.*import java.text.SimpleDateFormat/** Available context bindings:* SELECTION Iterable<DasObject>* PROJECT project* FILES files helper*/packageName = ""typeMapping = [(~/(?i)tinyint|smallint|mediumint/) : "Integer",(~/(?i)int/) : "Long",(~/(?i)bool|bit/) : "Boolean",(~/(?i)float|double|decimal|real/) : "Double",(~/(?i)datetime|timestamp|date|time/) : "Date",(~/(?i)blob|binary|bfile|clob|raw|image/): "InputStream",(~/(?i)/) : "String"]FILES.chooseDirectoryAndSave("Choose directory", "Choose where to store generated files") { dir ->SELECTION.filter { it instanceof DasTable && it.getKind() == ObjectKind.TABLE }.each { generate(it, dir) }}def generate(table, dir) {def className = javaName(table.getName(), true)+"Entity"def fields = calcFields(table)packageName = getPackageName(dir)PrintWriter printWriter = new PrintWriter(new OutputStreamWriter(new FileOutputStream(new File(dir, className + ".java")), "UTF-8")) printWriter.withPrintWriter {out -> generate(out, className, fields,table)}// new File(dir, className + ".java").withPrintWriter { out -> generate(out, className, fields,table) }}// 获取包所在⽂件夹路径def getPackageName(dir) {return dir.toString().replaceAll("\\\\", ".").replaceAll("/", ".").replaceAll("^.*src(\\.main\\.java\\.)?", "") + ";"}def generate(out, className, fields,table) {out.println "package $packageName"out.println ""out.println "import javax.persistence.Column;"out.println "import javax.persistence.Entity;"out.println "import javax.persistence.Table;"out.println "import java.io.Serializable;"out.println "import lombok.Getter;"out.println "import lombok.Setter;"out.println "import lombok.ToString;"Set types = new HashSet()fields.each() {types.add(it.type)}if (types.contains("Date")) {out.println "import java.util.Date;"}if (types.contains("InputStream")) {out.println "import java.io.InputStream;"}out.println ""out.println "/**\n" +" * @Description \n" +" * @Author zouhui\n" +" * @Date "+ new SimpleDateFormat("yyyy-MM-dd").format(new Date()) + " \n" +" */"out.println ""out.println "@Setter"out.println "@Getter"out.println "@ToString"out.println "@Entity"out.println "@Table ( name =\""+table.getName() +"\" )"out.println "public class $className implements Serializable {"out.println ""out.println genSerialID()fields.each() {out.println ""// 输出注释if (isNotEmpty(moent)) {out.println "\t/**"out.println "\t * ${moent.toString()}"out.println "\t */"}if (it.annos != "") out.println " ${it.annos.replace("[@Id]", "")}"// 输出成员变量out.println "\tprivate ${it.type} ${};"}// 输出get/set⽅法// fields.each() {// out.println ""// out.println "\tpublic ${it.type} get${.capitalize()}() {"// out.println "\t\treturn this.${};"// out.println "\t}"// out.println ""//// out.println "\tpublic void set${.capitalize()}(${it.type} ${}) {"// out.println "\t\tthis.${} = ${};"// out.println "\t}"// }out.println ""out.println "}"}def calcFields(table) {DasUtil.getColumns(table).reduce([]) { fields, col ->def spec = Case.LOWER.apply(col.getDataType().getSpecification())def typeStr = typeMapping.find { p, t -> p.matcher(spec).find() }.valuedef comm =[colName : col.getName(),name : javaName(col.getName(), false),type : typeStr,commoent: col.getComment(),annos: "\t@Column(name = \""+col.getName()+"\" )"]if("id".equals(Case.LOWER.apply(col.getName())))comm.annos +=["@Id"]fields += [comm]}}// 处理类名(这⾥是因为我的表都是以t_命名的,所以需要处理去掉⽣成类名时的开头的T,// 如果你不需要那么请查找⽤到了 javaClassName这个⽅法的地⽅修改为 javaName 即可)def javaClassName(str, capitalize) {def s = Util.splitNameIntoWords(str).collect { Case.LOWER.apply(it).capitalize() }.join("").replaceAll(/[^\p{javaJavaIdentifierPart}[_]]/, "_")// 去除开头的T /art/200906/129168.htms = s[1..s.size() - 1]capitalize || s.length() == 1? s : Case.LOWER.apply(s[0]) + s[1..-1]}def javaName(str, capitalize) {// def s = str.split(/(?<=[^\p{IsLetter}])/).collect { Case.LOWER.apply(it).capitalize() }// .join("").replaceAll(/[^\p{javaJavaIdentifierPart}]/, "_")// capitalize || s.length() == 1? s : Case.LOWER.apply(s[0]) + s[1..-1]def s = Util.splitNameIntoWords(str).collect { Case.LOWER.apply(it).capitalize() }.join("").replaceAll(/[^\p{javaJavaIdentifierPart}[_]]/, "_")capitalize || s.length() == 1? s : Case.LOWER.apply(s[0]) + s[1..-1]}def isNotEmpty(content) {return content != null && content.toString().trim().length() > 0}static String changeStyle(String str, boolean toCamel){if(!str || str.size() <= 1)return strif(toCamel){String r = str.toLowerCase().split('_').collect{cc -> Case.LOWER.apply(cc).capitalize()}.join('') return r[0].toLowerCase() + r[1..-1]}else{str = str[0].toLowerCase() + str[1..-1]return str.collect{cc -> ((char)cc).isUpperCase() ? '_' + cc.toLowerCase() : cc}.join('')}}static String genSerialID(){return "\tprivate static final long serialVersionUID = "+Math.abs(new Random().nextLong())+"L;"}完成后,点击此处,选择project 切换回来:这时,我们再次选择表,右键,选择我们⾃⼰新建的 groovy,然后选择⽣成存放的⽂件夹路径,⽣成:可以看到,⽣成的类名,package路径,以及已经实现了序列化,也加上了注解,指明了每个属性对应的表字段,如果@Table和@Column 没有引⼊包,还请在maven中添加相关依赖:<dependency><groupId>javax.persistence</groupId><artifactId>persistence-api</artifactId><version>1.0.2</version></dependency>。
Intelij根据数据库表生成实体类

Intelij根据数据库表⽣成实体类配置数据库打开数据库设置View->Tool Windows->Database在右侧会打开⼀个Database的窗⼝,点击+,选择Data Source,选择⾃⼰的数据库类型,然后填写好参数,就可以看到⾃⼰数据库中所有的表了。
修改脚本默认的情况下,使⽤脚本⽣成的⽂件,在命名上有些问题,⽐如 user_name表,会⽣成User_name.java,⾥⾯的属性也是这样的,但如果我们希望⽣成UserName.java的话,如果修改脚本。
在其中⼀个表上右键,选择Script Extensions->Goto Scripts Directory,左侧会切换到Scratches窗⼝,打开Generate POJOs.clj,修改如下⼀段代码:(defn- java-name [name](apply str (map clojure.string/capitalize (re-seq #"\w+" name))))修改为(defn- java-name [name](apply str (map clojure.string/capitalize (map #(clojure.string/replace % #"_""") (re-seq #"[^_]+" name)))));这⾥去除_符号,并⼤写_符号后的第⼀个字母同时也可以修改这个脚本⾥⾯的其他东西,⽐如去除表的前缀信息(defn- generate-pojo [directory table](let [class-name (java-name (subs (.getName table) 4)) ;这⾥去除xxx_这⼏个字符修改好之后,在相关的表上⾯,右键选择Script Extensions->Generate POJOs.clj,在弹出的窗⼝中保存就可以了。
IDEA自动生成注释模板配置方法

IDEA⾃动⽣成注释模板配置⽅法Java类信息Settings----> File and Code Templates;在Files找到Class,选中后可以看到右侧框内显⽰内容如下:#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end#parse("File Header.java")public class ${NAME} {}说明:第⼀⾏是新建类的所在包名;第⼆⾏是引⽤的⽂件,此处也是我们增加模板的地⽅选择Includes,点击"File Header",黏贴如下模板代码:/*** description: add a description [描述信息]* @author Makavelli [作者]* @date ${YEAR}/${MONTH}/${DAY} ${HOUR}:${MINUTE}:${SECOND} [时间,这⾥是年/⽉/⽇时:分:秒的格式]* @version 1.0.0 [版本信息]*/简要说明:description: add a description [描述信息]@author Makavelli [作者]@date ${YEAR}/${MONTH}/${DAY} ${HOUR} {MINUTE}:${SECOND} [时间,这⾥是年/⽉/⽇时:分:秒的格式]@version 1.0.0 [版本信息]如下图:⽅法注释Settings---->Live Templates;点击右侧加号选择"2. Template Group...",如下图:选择新建的"MethodsTemplate",再次点击右侧加号,选择"1. Live Template",并按如下步骤依次填写如下信息:快捷操作,这⾥⽤的是”*" ;Options 默认即可,默认选项是:“Tab”;模板内容,如下:** description $description$* @author Makavelli* @date $date$ $time$* @version 1.0.0$params$* @return $return$*/如图:点击"EDIT VARIABLES",对模板内的参数取值进⾏设置,本次设置如下图:填写params内容为:groovyScript("def result=''; def params=\"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split(',').toList(); result=' * @param ' + params[0]; for(i = 1; i < params.size(); i++) {result+='\\n * @param ' + params[i] + ((i+1 < params.size() - 1) ? '\\n' : '')};return resu 填写return内容为:groovyScript("def result=''; def params=\"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split('<').toList(); for(i = 0; i < params.size(); i++) {if(i!=0){result+='<';}; def p1=params[i].split(',').toList(); for(i2 = 0; i2 < p1.size(); i2++) { def p2=p1[i2].split('\\\\.').toList( Skip if defined⼀列中"description"处未勾选,是为了键⼊快捷键⽣成⽅法注释的时候可以将⿏标聚焦⾄改⾏,⽅便添加注释⽅法描述信息;点击"OK",返回上⼀设置页,选择应⽤此模板的对象(操作的位置在中下部位),如下图:设置前设置后(点击"Define",在弹出框内根据实际需要选择即可)点击OK完成设置;使⽤效果PS:⽣成注释的时候需要先输⼊"/*",然后按"Tab"键,所以在设置模板的时候第⼀⾏的设置为⼀个※,为了和输⼊的字符组合起来,以⽣成完整、规范的注释信息;此次配置使⽤的IDEA版本信息如下:IntelliJ IDEA 2020.3.1 (Ultimate Edition)本⽂部分内容参考、引⽤如下⽂章:。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Intellij IDEA 如何通过数据库表生成带注解的实体类(图文详细教程)这篇文章主要介绍了Intellij IDEA 如何通过数据库表生成带注解的实体类(图文详细教程),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧第一步:新建一个Maven项目。
项目的名称为JpaDemo。
我这里是通过idea插件对应的spring项目生成器https://start.spring.io,直接生成项目。
如图:下一步,修改成对应项目的基本信息。
如图:选择相应的依赖jar包。
选择项目的位置完成创建温馨提示,之前需要安装好maven。
选择Mysql。
配置数据库基本信息其实配置了这个数据库连接之后,是可以直接通过脚本进行导出数据库实体类了,但是这个导出的实体类比较简陋,需要进行修改比较多,或是需要自己进行修改生成脚本语句。
如:需要选一下实体类放置的地方。
效果如下:但是以上的实体类没有带注解。
那么我们通过项目中用到hibernate,或是jpa需要加注解怎么办,总不能一个个注解加上去吧。
idea当然不会这么干啦。
使用IntelliJ IDEA快编码速度:我们程序员的工作不是写程序,而是写程序解决问题。
那我们删了之前生成的实体类。
我们重新生成一份带注解的实体类。
第三步:配置hibernate文件。
如果没有配置该配置文件,idea则没有显示出生成实体类的工具选项。
配置一下hibernate配置文件。
在资源文件下新建一个hibernate.cfg.xml配置文件。
并输入以下内容。
如图:<?xml version='1.0' encoding='utf-8'?><!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""/dtd/hibernate-configuration-3.0.dtd"><hibernate-configuration><session-factory><!-- Database connection settings --><property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://localhost/test</property><property name="ername">root</property><property name="connection.password">123456</property><!-- JDBC connection pool (use the built-in) --><!--<property name="connection.pool_size">1</property>--><!-- SQL dialect --><property name="dialect">org.hibernate.dialect.MySQLDialect</property><!-- Enable Hibernate's automatic session context management --><property name="current_session_context_class">thread</property><!-- Echo all executed SQL to stdout --><property name="show_sql">true</property><!-- Drop and re-create the database schema on startup --><!--<property name="hbm2ddl.auto">update</property>--></session-factory></hibernate-configuration>调出生成实体类的配置工具me。
一开始是没有选中数据源的。
配置选项(1)数据源选择(2)生成实体类的位置(3)实体类的前缀和后缀(4)可以全选表,或是全不选表(5)可以生成hibernate的实体类对应的xml文件(6)展开表之后可以修改对应之间的类型。
第五步:选中需要执行的数据库表。
生成过程导出的结果可以查看其中的一个实体类,看看效果。
package com.souvc.entity;import javax.persistence.Basic;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.Table;/*** Created by Administrator on 2017/3/22.*/@Entity@Table(name = "authorities", schema = "test", catalog = "")public class SouvcAuthoritiesEntity {private String username;private String authority;@Basic@Column(name = "username", nullable = false, length = 50)public String getUsername() {return username;}hibernate 主配置文件public void setUsername(String username) {ername = username;}@Basic@Column(name = "authority", nullable = false, length = 50)public String getAuthority() {return authority;}public void setAuthority(String authority) {this.authority = authority;}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;SouvcAuthoritiesEntity that = (SouvcAuthoritiesEntity) o;if (username != null ? !username.equals(ername) : ername != null) r eturn false;if (authority != null ? !authority.equals(that.authority) : that.authority != nul l) return false;return true;}@Overridepublic int hashCode() {int result = username != null ? username.hashCode() : 0;result = 31 * result + (authority != null ? authority.hashCode() : 0);return result; }}<?xml version='1.0' encoding='utf-8'?><hibernate-configuration><session-factory><!-- Database connection settings --><property name="connection.driver_class">com.mysql.jdbc.Driver</property><property name="connection.url">jdbc:mysql://localhost:3306/test</property><!-- JDBC connection pool (use the built-in) --><!--<property name="connection.pool_size">1</property>--><!-- SQL dialect --><property name="dialect">org.hibernate.dialect.MySQLDialect</property><!-- Enable Hibernate's automatic session context management --><property name="current_session_context_class">thread</property><!-- Echo all executed SQL to stdout --><property name="show_sql">true</property><mapping class="com.souvc.entity.SouvcAuthoritiesEntity"/><mapping resource="com/souvc/entity/SouvcAuthoritiesEntity.hbm.xml"/><mapping resource="com/souvc/entity/SouvcCustomEntity.hbm.xml"/><mapping class="com.souvc.entity.SouvcCustomEntity"/><mapping class="ng.String"/><mapping resource="java/lang/ng.String.hbm.xml"/><mapping class="com.souvc.entity.SouvcRcDataDictionaryEntity"/><mapping resource="com/souvc/entity/SouvcRcDataDictionaryEntity.hbm.xml"/><mapping class="com.souvc.entity.SouvcRcDataDictionaryListEntity"/><mapping resource="com/souvc/entity/SouvcRcDataDictionaryListEntity.hbm.xml"/> <mapping class="com.souvc.entity.SouvcRcEmailAccountInfoEntity"/><mapping resource="com/souvc/entity/SouvcRcEmailAccountInfoEntity.hbm.xml"/> <mapping class="com.souvc.entity.SouvcRcEmailInfoEntity"/><mapping resource="com/souvc/entity/SouvcRcEmailInfoEntity.hbm.xml"/><mapping class="com.souvc.entity.SouvcRcPermissionEntity"/><mapping resource="com/souvc/entity/SouvcRcPermissionEntity.hbm.xml"/><mapping resource="com/souvc/entity/SouvcRcRoleEntity.hbm.xml"/><mapping class="com.souvc.entity.SouvcRcRoleEntity"/><mapping class="com.souvc.entity.SouvcRcRolePermissionsEntity"/>其他配置文件 、<mapping class="com.souvc.entity.SouvcRcUserLoginLogsEntity"/> <mapping resource="com/souvc/entity/SouvcRcUserLoginLogsEntity.hbm.xml"/> <mapping class="com.souvc.entity.SouvcRcUserRoleEntity"/> <mapping resource="com/souvc/entity/SouvcRcUserRoleEntity.hbm.xml"/> <mapping class="com.souvc.entity.SouvcRoleEntity"/> <mapping resource="com/souvc/entity/SouvcRoleEntity.hbm.xml"/> <mapping class="com.souvc.entity.SouvcUserEntity"/> <mapping resource="com/souvc/entity/SouvcUserEntity.hbm.xml"/> <mapping class="com.souvc.entity.SouvcUserRoleEntity"/> <mapping resource="com/souvc/entity/SouvcUserRoleEntity.hbm.xml"/> <mapping class="com.souvc.entity.SouvcUsersEntity"/> <mapping resource="com/souvc/entity/SouvcUsersEntity.hbm.xml"/> <!-- Drop and re-create the database schema on startup --> <!-- <property name="hbm2ddl.auto">update</property> --> </session-factory> </hibernate-configuration><?xml version='1.0' encoding='utf-8'?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping> <class name="com.souvc.entity.SouvcAuthoritiesEntity" table="authorities" schema="tes t"> <property name="username"> <column name="username" sql-type="varchar(50)" length="50"/> </property> <property name="authority"> <column name="authority" sql-type="varchar(50)" length="50"/> </property> </class></hibernate-mapping>第七步:修正。