idea中基于数据库表的JPA实体生成(lombok)

本文介绍了如何在IntelliJ IDEA中基于数据库表利用JPA生成实体类,并结合Lombok进行代码优化。通过连接数据库,选择表,然后使用Scripted Extensions的Generate POJOs.groovy脚本,自定义生成目录。由于IDEA默认的生成方式不满足代码规范,作者选择了编写Groovy脚本来实现符合公司规范的JPA实体。

前景

首先web项目是jpa做持久层框架,数据库设计先行,所以有需要根据公司的项目结构和规范生成项目下不同分层的类。

使用

idea 2019.2中的 view工具栏下的Tool windows下的database单击一下再右侧菜单栏出现database标签,然后连接数据库,就是填用户名密码,url,等信息。然后选择数据库即schema,找到schema下的表如下图的test库下的demo表,右键点击后选择Scripted Extensions后选择 Generate POJOs.groovy,点击后会让你选择生成的目录。点击goto scripts directory找到项目下的groovy脚本的存放地址,在idea左侧项目下,打开Generate POJOs.groovy,是一个groovy语言的脚本

view工具栏
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

import com.intellij.database.model.DasTable
import com.intellij.database.util.Case
import com.intellij.database.util.DasUtil

/*
 * Available context bindings:
 *   SELECTION   Iterable<DasObject>
 *   PROJECT     project
 *   FILES       files helper
 */

// 设置包名,生成java文件时的包名,需要按自己所需修改
packageName = "com.sample;"
// 数据库类型和java类型的映射,需要稍微修改,如时间类型可能使用java8的时间类型,或者java.util.Date或者字符串类型等如:
/*  (~/(?i)bigint/)                      : "Long",
        (~/(?i)int|tinyint/)                 : "Integer",
        (~/(?i)float|double|decimal|real/): "java.math.BigDecimal",
        (~/(?i)date|datetime|timestamp/)       : "java.util.DateTime",*/
typeMapping = [
  (~/(?i)int/)                      : "long",
  (~/(?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) {
   
   
	// 自定义的类名生成方法,就是将 t_demo变成 TDemo,当然你可以修改这个方法,如果格式统一你就直接改方法,最好是通过配置的方式进行修改,当然我是没搞这么复杂,配置后面好维护和使用
  def className = javaName(table.getName(), true)
  // 获取表里的所有字段
  def fields = calcFields(table)
  // 生成字符串并写文件生成java文件
  new File(dir, className + ".java").withPrintWriter {
   
    out -> generate(out
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值