idea怎么根据数据库表自动生成JPA实体类
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本篇内容主要讲解"idea怎么根据数据库表自动生成JPA实体类",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"idea怎么根据数据库表自动生成JPA实体类"
千家信息网最后更新 2026年11月02日idea怎么根据数据库表自动生成JPA实体类
本篇内容主要讲解"idea怎么根据数据库表自动生成JPA实体类",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"idea怎么根据数据库表自动生成JPA实体类"吧!
在一些软件开发过程模式下,可能会需要根据数据库表生成对应的实体。在idea工具中如何做到这点呢?最简单的答案可能是使用插件吧。其实还有一个很快捷的方法,步骤如下:
通过view->tool windows->database菜单,打开数据库工具
连接数据库
选定需要生成实体类的表,右键菜单选择scripted extensions,有一个Generate POJOs.groovy
如此生成的实体类也许不能满足你的需求,你可以自己写一个groovy脚本来生成符合需求的实体类。在上面的第三步中,下面有一个go to scripts directory菜单,即可打开脚本目录。在此目录下新建一个脚本,比如Generate jpa Entity Object.groovy。
比如我创建的脚本如下
import com.intellij.database.model.DasTableimport com.intellij.database.util.Caseimport com.intellij.database.util.DasUtil/* * Available context bindings: * SELECTION Iterable* PROJECT project * FILES files helper */packageName = "me.test.entity;"typeMapping = [ (~/(?i)bigint/) : "Long", (~/(?i)tinyint/) : "Boolean", (~/(?i)int/) : "Integer", (~/(?i)float|double|decimal|real/): "Double", (~/(?i)datetime|timestamp/) : "java.sql.Timestamp", (~/(?i)date/) : "java.sql.Date", (~/(?i)time/) : "java.sql.Time", (~/(?i)/) : "String"]FILES.chooseDirectoryAndSave("Choose directory", "Choose where to store generated files") { dir -> SELECTION.filter { it instanceof DasTable }.each { generate(it, dir) }}def generate(table, dir) { def className = javaName(table.getName(), true) def fields = calcFields(table) new File(dir, className + ".java").withPrintWriter { out -> generate(out, className, fields, table) }}def generate(out, className, fields, table) { out.println "package $packageName" out.println "" out.println "import lombok.Data;" out.println "import javax.persistence.*;" out.println "" out.println "/**" out.println " * entity class for ${table.getName()}" if (isNotEmpty(table.getComment())) { out.println " * ${table.getComment()}" } out.println "*/" out.println "@Data" out.println "@Entity" out.println "@Table(name = \"${table.getName()}\")" out.println "public class $className {" out.println "" fields.each() { out.println "\t/**" out.println "\t* ${isNotEmpty(it.comment) ? it.comment : it.name}" out.println "\t*/" if (it.annos.size() > 0) it.annos.each() { out.println "\t${it}" } out.println "\tprivate ${it.type} ${it.name};" } 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() }.value def anos = []; if (Case.LOWER.apply(col.getName()).equals('id')) { anos += ["@Id", "@GeneratedValue(strategy = GenerationType.IDENTITY)"] } else { anos += ["@Column(name = \"${col.getName()}\")"] } def field = [ name : javaName(col.getName(), false), type : typeStr, comment: col.getComment(), annos: anos] fields += [field] }}def javaName(str, capitalize) { def s = com.intellij.psi.codeStyle.NameUtil.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 str if(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('') }}
到此,相信大家对"idea怎么根据数据库表自动生成JPA实体类"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
实体
生成
数据
数据库
脚本
自动生成
菜单
内容
工具
方法
目录
需求
学习
实用
更深
兴趣
实用性
实际
插件
操作简单
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
保险科技 互联网保险
互联网新科技
国智互联网科技
互联网科技公司的优势
科技互联网技术
奇酷互联网科技公司
卓越科技(互联网 )
致聘互联网科技
宁夏众和广鑫互联网科技有限公司
成都铂石互联网科技做什么的
宁夏科技产业互联网案例
华夏恒生科技与互联网科技
晋城互联网科技
皮皮虾互联网科技有限公司
广州互联网高科技取餐柜
全球科技与互联网公司市值变化
科技和互联网行业的特点
科技互联网公司两年变化
互联网科技博主张洲
伍佰万互联网科技是干嘛的
山东特亿宝互联网科技有限公司
新华互联网科技学校
科技类互联网
汇久创客互联网科技
互联网科技上市公司
宁夏众和广鑫互联网科技有限公司
西安小鹰速贷互联网科技有限公司
江苏苏星互联网科技有限公司
陕西九四连强互联网科技有限公司
云南互联网科技学费