idea 通过 Generate POJOs.groovy 生成实体类

Generate POJOs.groovy脚本:

import com.intellij.database.model.DasTableimport com.intellij.database.util.Caseimport com.intellij.database.util.DasUtil

packageName = ""typeMapping = [        (~/(?i)tinyint|smallint|mediumint/)      : "Integer",        (~/(?i)bool|bit/)                        : "Boolean",        (~/(?i)int/)                      : "Long",        (~/(?i)float|double|decimal|real/): "BigDecimal",        (~/(?i)datetime|timestamp/)       : "Date",        (~/(?i)date/)                     : "Date",        (~/(?i)time/)                     : "Date",        (~/(?i)/)                         : "String",        (~/(?i)blob|binary|bfile|clob|raw|image/): "InputStream"]

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)  packageName = getPackageName(dir)  new File(dir, className + ".java").withPrintWriter("utf-8") { out -> generate(out, className,table, fields) }}

def generate(out, className,table, fields) {

  Set<String> types = new HashSet<String>()  fields.each() {    types.add(it.type)  }

  out.println "package $packageName"  out.println ""  out.println ""  out.println "import antu.com.annotations.Column;"  out.println "import antu.com.annotations.PrimaryKey;"  out.println "import antu.com.annotations.TableName;"  if (types.contains("Date")) {    out.println "import java.util.Date;"  }

  if (types.contains("InputStream")) {    out.println "import java.io.InputStream;"  }

  if (types.contains("BigDecimal")) {    out.println "import java.math.BigDecimal;"  }

  out.println ""  out.println "/**\n" +          " * @Author CYH \n" +          "**/"  out.println "@TableName(\"${table.toString().replaceAll("table:","")}\")"  out.println "public class $className {"  out.println ""  fields.each() {    out.println ""    if (it.annos != "") out.println "  ${it.annos}"    if (it.comment != "")  out.println "  /*** ${it.comment} */"    out.println "  @Column(\"${it.name.toUpperCase()}\")"    out.println "  private ${it.type} ${it.name};"  }  out.println ""  fields.each() {    out.println ""    out.println "  public ${it.type} get${it.name.capitalize()}() {"    out.println "    return ${it.name};"    out.println "  }"    out.println ""    out.println "  public void set${it.name.capitalize()}(${it.type} ${it.name}) {"    out.println "    this.${it.name} = ${it.name};"    out.println "  }"    out.println ""  }  out.println "}"}

def getPackageName(dir) {  return dir.toString().replaceAll("\\\\", ".").replaceAll("^.*src(\\.main\\.java\\.)?", "") + ";"}

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    fields += [[                       column : col.getName(),                       comment: col.getComment(),                       name : javaName(col.getName(), false),                       type : typeStr,                       annos: ""]]  }}

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]}

在idea右侧Database工具栏中新建数据库连接后选中表如图操作即可生成实体类

原文地址:https://www.cnblogs.com/cyh1282656849/p/11969499.html

时间: 2024-11-03 21:41:58

idea 通过 Generate POJOs.groovy 生成实体类的相关文章

2016.5.12 用PowerDesigner做数据库逆向工程及生成实体类

一.创建数据库物理模型 1.首先打开PowerDesigner-文件-逆向工程-数据库 2.在弹出窗口中选择数据库版本,最高10g选择,确定 3.创建数据源 4.点击SetUP...设置数据源 5.填写数据库实例名 6.填写用户名,密码点击connect 7.连接成功后点确定,即可生成物理模型. 二.生成实体类 1.Tools → Generate Object-Oriented Model, 2.弹出框General页选择模型语言C#,Detail页中一定要把Check Model项取消,否则

Mybatis自动生成实体类和实体映射工具

Mybatis Mysql生成实体类 用到的Lib包: mybatis-generator-core-1.3.2.jarmysql-connector-java-5.1.30.jar 1. 创建一个文件generator.properties, 主要用于配置相关路径和数据库信息. #工程src路径 project = D:/project/ #工程存放mapper.xml路径 resource = D:/project/ #指定数据连接驱动jar地址 classPath=D:/project/m

mybatis怎么自动生成实体类,Mapper配置文件和Dao接口

1.首先准备好jar包 https://github.com/mybatis/generator/releases下载MyBatis Generator 下载压缩包后,打开可以看到lib目录下有我们需要的jar包,添加到项目引用 2.和Hibernate逆向生成一样,这里也需要一个配置文件: generator.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfigu

mybatis根据数据库表结构自动生成实体类,dao,mapper

首先, pom需要引入 <!-- mysql --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.39</version> </dependency> <!-- mybatis--> <dependency> <group

spring boot集成mybatis 自动生成实体类和mapper文件、Dao层

1.创建spring boot集成mybatis请见 2.在resources目录下新键mybatis-generator文件夹,并在文件夹中新键mybatis-generatorConfig.xml文件和mybatis-generatorinit.properties两个文件 mybatis-generatorinit.properties jdbc_driver=oracle.jdbc.driver.OracleDriver jdbc_url=jdbc:oracle:thin:@loclho

eclipse逆向生成实体类

(转自:http://blog.csdn.net/wangpeng047/article/details/6877720) 做项目必然要先进行数据库表设计,然后根据数据库设计建立实体类(VO),这是理所当然的,但是到公司里做项目后,让我认识到,没有说既进行完数据库设计后还要再"自己"建立一变VO.意思是,在项目设计时,要么根据需求分析建立实体类,由正向生成数据库表:要么就先进行数据库表设计,再逆向生成实体类.没有说进行完任意一方的设计后再去花时间去自己匹配建立另一方的设计. 原因是:

如何通过java反射将数据库表生成实体类?

首先有几点声明: 1.代码是在别人的基础进行改写的: 2.大家有什么改进的意见可以告诉我,也可以自己改好共享给其他人: 3.刚刚毕业,水平有限,肯定有许多不足之处: 4.希望刚刚学习java的同学能有所启发. //这个是做转换的类,里面的DB只是封装了数据库的连接,大家可以用自己的,随意 package com.tt.util.gen.entity.tool; import java.io.File;import java.io.FileWriter;import java.io.IOExcep

T4模板_根据DB生成实体类

为了减少重复劳动,可以通过T4读取数据库表结构,生成实体类,用下面的实例测试了一下 1.首先创建一个项目,并添加文本模板: 2.添加 文本模板: 3.向T4文本模板文件添加代码: <#@ template language="C#" debug="True" hostspecific="True" #> <#@ assembly name="System.Data" #> <#@ assembly

NHibernate生成实体类、xml映射文件

最近工作电脑装完win10后,之前使用的codeSmith安装不了,索性自己写一个. 界面比较简单,如下图: 第一行为Oracle数据库的连接字符串.连接成功后,填充表到第4行的下拉列表中. 第二行为实体类命名空间. 第三行为保存生成类.xml文件选择文件夹. 1 private void btnConnect_Click(object sender, RoutedEventArgs e) 2 { 3 try 4 { 5 using (OracleConnection conn = new Or