一. 修改Generate POJO.groovy文件

改为

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
*/ packageName = "app\\common\\entity;"
typeMapping = [
(~/(?i)int/) : "\$",
(~/(?i)float|double|decimal|real/): "\$",
(~/(?i)datetime|timestamp/) : "\$",
(~/(?i)date/) : "\$",
(~/(?i)time/) : "\$",
(~/(?i)/) : "\$"
] 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 + ".php").withPrintWriter { out -> generate(out, className, fields) }
} def generate(out, className, fields) {
out.println "<?php"
out.println ""
out.println ""
out.println "namespace $packageName"
out.println ""
out.println ""
out.println "class $className {"
out.println ""
fields.each() {
if (it.annos != "") out.println " ${it.annos}"
out.println " private ${it.type}${it.name};"
}
out.println ""
out.println " public function __construct("+arrayToString(fields)+")"
out.println " {"
fields.each() {
out.println " \$this->${it.name} = "+"\$"+"${it.name};"
}
out.println " }"
fields.each() {
out.println ""
out.println " public function get${it.name.capitalize()}() {"
out.println " return \$this->${it.name};"
out.println " }"
out.println ""
out.println " public function 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),
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]
}
def arrayToString(fields){
String str = "";
fields.each() {
str+=("\$"+it.name+",")
}
str = str.substring(0,str.length()-1);
return str;
}

二.生产php pojo类

打开phpstorm database菜单,选取要生成POJO类的表点击鼠标右键, 选择scrpted excensission->Gennerate POJOs.groovy

最新文章

  1. 简单的c#winform象棋游戏(附带源码)
  2. Android4.4 以太网和DHCP启动过程介绍
  3. Nine-Patch图片
  4. 避免每次输入bundler Exec命令
  5. uva514(trail)(模拟栈)
  6. java.util 集合框架集合
  7. 基于Linux2.6内核的加密容器法保护文件方法
  8. google calendar api v3
  9. HTML禁止使用右键
  10. jenkins上集成fitnesse
  11. Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(二)
  12. OSX MacVim + vim-lldb配置和使用心得
  13. vultr VPS的购买及搭建ss介绍,支持锐速加速优化
  14. 在py文件中设置文件头
  15. Linux 上利用Nginx代理uWSGI处理Flask web应用
  16. 基于SaaS的企业数据隐私保护平台
  17. Flask学习【第3篇】:蓝图、基于DBUtils实现数据库连接池、上下文管理等
  18. C++ template —— 表达式模板(十)
  19. 修改salt-minion的id后报错解决方法
  20. Oracle执行SQL查询语句的步骤

热门文章

  1. 一文读懂跨平台框架 Flutter 的搭建与运行
  2. Linux Shell中捕获CTRL+C
  3. 北风设计模式课程---接口分离原则(Interface Segregation Principle)
  4. 线性中继器 Linear Repeater
  5. rime 同文输入法 安卓系统
  6. OpenStack 多节点纳管 vCenter 5.5
  7. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_06 Properties集合_2_Properties集合中的方法store
  8. 阶段1 语言基础+高级_1-3-Java语言高级_1-常用API_1_第5节 String类_5_字符串的获取相关方法
  9. 阶段1 语言基础+高级_1-3-Java语言高级_04-集合_03 斗地主案例(单列)_1_斗地主案例的需求分析
  10. 没看这篇干货,别和我说你会IDEA Debug