使用idea自动生成bean文件

之前使用mybatis+mysql的时候,利用generater插件生成代码。

现在公司使用JPA+sqlserver进行开发。很刺激,换了数据库之后就不知道该怎么写代码了。建表之后重新生成bean。网上搜了一下发现idea可以直接生成bean文件。

一、连接数据库

idea连接数据库,方法基本一样,如图:

 

二、创建bean文件夹

三、生成Extensions

打开连接好的数据库,数据库操作界面空白处右击选择Scripted Extensions-->Go to scripts Directory。如图:

结果如下:

打开生成的Generate POJOs.groovy文件,将下面的内容复制进去,可以根据自己的需要进行修改。

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

//此处配置你的entity文件路径
packageName = "com.ier.dcfilter.entity;"
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 && it.getKind() == ObjectKind.TABLE }.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, table,className, fields) }
}

def generate(out, table,className, fields) {
  def tableName = table.getName()
  out.println "package $packageName"
  out.println ""
  out.println ""
  out.println "import javax.persistence.*;"
  out.println "import java.io.Serializable;"
  out.println "import org.hibernate.annotations.GenericGenerator;"
  out.println ""
  out.println ""
  out.println "@Entity"
  out.println "@Table(name = \"$tableName\")"
  out.println "public class $className implements Serializable{"
  out.println ""
  fields.each() {
    if (it.annos != "") out.println "  ${it.annos}"
    out.println "    private ${it.type} ${it.name};"
  }
  out.println ""



  fields.each() {
      out.println ""
      //我这里只是为了判断id属性,可以不判断
      if ("id".equalsIgnoreCase(it.colum)){
        out.println "\t@Id"
        out.println "\t@GenericGenerator(name = \"user-uuid\", strategy = \"uuid\")"
        out.println "\t@GeneratedValue(generator = \"user-uuid\")"
        out.println "\t@Column(name = \"id\", nullable = false, length = 32)"
        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 ""
      }else {
        out.println "\t@Column(name = \"${it.colum}\")"
        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 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 += [[
                       name : javaName(col.getName(), false),
                       colum: col.getName(),
                       type : typeStr,
                       annos: ""]]
  }
}

def javaName(str, capitalize) {
  def s = str.split(/(?<=[^\p{IsLetter}])/).collect { Case.LOWER.apply(it).capitalize() }
          .join("").replaceAll(/[^\p{javaJavaIdentifierPart}]/, "_").replaceAll(/_/, "")
  capitalize || s.length() == 1 ? s : Case.LOWER.apply(s[0]) + s[1..-1]
}

四、代码生成

数据库操作界面,右击空白处,依次选择Scripted Extensions-->Generate POJOs.groovy,选择自己设置的bean文件路径,生成代码。如图:

效果如下:

package com.ier.dcfilter.entity;


import javax.persistence.*;
import java.io.Serializable;
import org.hibernate.annotations.GenericGenerator;



@Entity
@Table(name = "dcf_base_freq")
public class BaseFreq implements Serializable{


    private static final long serialVersionUID = 1L;
    private String id;
    private String projectId;
    private double freq0;
    private double ho;
    private java.sql.Timestamp time;


	@Id
	@GenericGenerator(name = "user-uuid", strategy = "uuid")
	@GeneratedValue(generator = "user-uuid")
	@Column(name = "id", nullable = false, length = 32)
    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }


	@Column(name = "project_id")
    public String getProjectId() {
        return projectId;
    }

    public void setProjectId(String projectId) {
        this.projectId = projectId;
    }


	@Column(name = "freq0")
    public double getFreq0() {
        return freq0;
    }

    public void setFreq0(double freq0) {
        this.freq0 = freq0;
    }


	@Column(name = "ho")
    public double getHo() {
        return ho;
    }

    public void setHo(double ho) {
        this.ho = ho;
    }


	@Column(name = "time")
    public java.sql.Timestamp getTime() {
        return time;
    }

    public void setTime(java.sql.Timestamp time) {
        this.time = time;
    }

}

五、参考文章

  1. https://www.jianshu.com/p/44bb7e25f5c7

 

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
MyBatis可以通过MyBatis Generator(MBG)工具自动生成Mapper接口。 MBG是一个用于生成Java代码的插件,它可以根据数据库中的表结构自动生成Java Bean和Mapper接口。 为了使用MBG,你需要在MyBatis的配置文件中添加以下插件配置: ``` <plugins> <plugin type="org.mybatis.generator.plugins.MapperPlugin"> <property name="mappers" value="org.apache.ibatis.annotations.Mapper"/> </plugin> </plugins> ``` 然后,在MBG配置文件中,你需要指定数据库连接信息、生成的Java Bean和Mapper接口的包名、表名等信息。例如: ``` <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> <generatorConfiguration> <!-- 数据库驱动 --> <classPathEntry location="mysql-connector-java-5.1.34-bin.jar"/> <context id="MyBatis3"> <!-- 生成Java Bean的包名 --> <javaModelGenerator targetPackage="com.example.model" targetProject="src/main/java"> <property name="enableSubPackages" value="true"/> <property name="trimStrings" value="true"/> </javaModelGenerator> <!-- 生成Mapper接口的包名 --> <javaClientGenerator targetPackage="com.example.mapper" targetProject="src/main/java" type="XMLMAPPER"> <property name="enableSubPackages" value="true"/> </javaClientGenerator> <!-- 数据库连接信息 --> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/mybatis" userId="root" password="123456"> <property name="nullCatalogMeansCurrent" value="true"/> </jdbcConnection> <!-- 表名 --> <table tableName="user"></table> </context> </generatorConfiguration> ``` 最后,你可以通过命令行或者IDEA插件来运行MBG,生成Java Bean和Mapper接口。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值