• 因:使用SpringBoot -jpa,需要手动配置Entity

  • 但是如果你的表中有很多属性,或者有很多表怎么办?? 每个手动写? 还是用mybatis。写mapper???
  • 解决:使用idea自动工具
  • 使用工具可以生成pojo对象,但是缺少了注解:
  • 手动修改李groovy文件,方便以后一键生成:
  1. import com.intellij.database.model.DasTable
  2. import com.intellij.database.model.ObjectKind
  3. import com.intellij.database.util.Case
  4. import com.intellij.database.util.DasUtil
  5. /*
  6. * Available context bindings:
  7. * SELECTION Iterable<DasObject>
  8. * PROJECT project
  9. * FILES files helper
  10. */
  11. packageName = "com.inyu.entity;"
  12. typeMapping = [
  13. (~/(?i)int/) : "long",
  14. (~/(?i)float|double|decimal|real/): "double",
  15. (~/(?i)datetime|timestamp/) : "java.sql.Timestamp",
  16. (~/(?i)date/) : "java.sql.Date",
  17. (~/(?i)time/) : "java.sql.Time",
  18. (~/(?i)/) : "String"
  19. ]
  20. FILES.chooseDirectoryAndSave("Choose directory", "Choose where to store generated files") { dir ->
  21. SELECTION.filter { it instanceof DasTable && it.getKind() == ObjectKind.TABLE }.each { generate(it, dir) }
  22. }
  23. def generate(table, dir) {
  24. def className = javaName(table.getName(), true)
  25. def fields = calcFields(table)
  26. new File(dir, className + ".java").withPrintWriter { out -> generate(out,table, className, fields) }
  27. }
  28. def generate(out,table, className, fields) {
  29. def tableName = table.getName();
  30. out.println "package $packageName"
  31. out.println ""
  32. out.println ""
  33. out.println "public class $className {"
  34. out.println ""
  35. fields.each() {
  36. if (it.annos != "") out.println " ${it.annos}"
  37. out.println " private ${it.type} ${it.name};"
  38. }
  39. out.println ""
  40. fields.each() {
  41. out.println ""
  42. out.println " public ${it.type} get${it.name.capitalize()}() {"
  43. out.println " return ${it.name};"
  44. out.println " }"
  45. out.println ""
  46. out.println " public void set${it.name.capitalize()}(${it.type} ${it.name}) {"
  47. out.println " this.${it.name} = ${it.name};"
  48. out.println " }"
  49. out.println ""
  50. }
  51. out.println "}"
  52. }
  53. def calcFields(table) {
  54. DasUtil.getColumns(table).reduce([]) { fields, col ->
  55. def spec = Case.LOWER.apply(col.getDataType().getSpecification())
  56. def typeStr = typeMapping.find { p, t -> p.matcher(spec).find() }.value
  57. fields += [[
  58. name : javaName(col.getName(), false),
  59. colum: col.getName(),
  60. type : typeStr,
  61. annos: ""]]
  62. }
  63. }
  64. def javaName(str, capitalize) {
  65. def s = str.split(/(?<=[^\p{IsLetter}])/).collect { Case.LOWER.apply(it).capitalize() }
  66. .join("").replaceAll(/[^\p{javaJavaIdentifierPart}]/, "")
  67. capitalize || s.length() == 1? s : Case.LOWER.apply(s[0]) + s[1..-1]
  68. }

(SpringBoot-Jpa)使用Idea数据库自动脚本Generate POJOS生成 Entity对象,的更多相关文章

  1. Mybatis根据数据库中的表自动生成Bean对象与Mapper文件 (小白式教程)

    示例IDE采用 IDEA //**********************华丽的分割线****************// 1.新建一个java项目-->在Src目录下创建3个包(Package ...

  2. SpringBoot JPA + H2增删改查示例

    下面的例子是基于SpringBoot JPA以及H2数据库来实现的,下面就开始搭建项目吧. 首先看下项目的整体结构: 具体操作步骤: 打开IDEA,创建一个新的Spring Initializr项目, ...

  3. 用SpringBoot+MySql+JPA实现对数据库的增删改查和分页

    使用SpringBoot+Mysql+JPA实现对数据库的增删改查和分页      JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述 ...

  4. shell脚本实现数据库自动备份和删除备份

    为了安全起见,我们每天都需要备份数据库,但是备份数据库的时间往往是在凌晨左右,大家都休息,没人使用的时候,这样我们就需要linux系统实现自动备份,即定时自动执行脚本.但是我们又不能让所有的备份一直保 ...

  5. Windows下Oracle数据库自动备份批处理脚本

    expdb命令版本 @echo off REM ########################################################### REM # Windows Se ...

  6. atitit.自动生成数据库结构脚本,或者更换数据库,基于hibernate4

    atitit.自动生成数据库结构脚本,或者更换数据库,基于hibernate4 目前近况:: 更换数据库,但是是使用spring集成的. <!-- hibernate配置文件路径 --> ...

  7. springboot学习-jdbc操作数据库--yml注意事项--controller接受参数以及参数校验--异常统一管理以及aop的使用---整合mybatis---swagger2构建api文档---jpa访问数据库及page进行分页---整合redis---定时任务

    springboot学习-jdbc操作数据库--yml注意事项--controller接受参数以及参数校验-- 异常统一管理以及aop的使用---整合mybatis---swagger2构建api文档 ...

  8. SpringBoot使用Hibernate,实现自动创建数据库表【博客数据库设计】

    我们准备设计博客,那就要设计数据库. 我们可以使用Hibernate来自动生成数据库. 博客数据库的结构: 实体类: 博客 Blog 博客分类 Type 博客标签 Tag 博客评论 Comment 用 ...

  9. Springboot 禁用数据库自动配置

    转载至:https://blog.csdn.net/wyw815514636/article/details/80846545 https://blog.csdn.net/knqi007/articl ...

随机推荐

  1. 13props 对象

    props: { homeData: { type: Object, required: true } }, 父组件传递给子组件是对象homeData或者数组: homeData={name:'zs' ...

  2. C004:要求用户输入一个美元数量,然后显示出增加5%税率后的相应金额

    程序: #include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) { float amount; do{ printf(&q ...

  3. Oracle中创建千万级大表归纳

    从一月至今,我总共归纳了三种创建千万级大表的方案,它们是: 下面是这三种方案的对比表格: # 名称 地址 主要机制 速度 1 在Oracle中十分钟内创建一张千万级别的表 https://www.cn ...

  4. ZT:如果有来生,要做一棵树

    出处:https://zhidao.baidu.com/question/393644025.html 原以为是三毛所作,想不到还有争议. 如果有来生,要做一棵树, 站成永恒.没有悲欢的姿势, 一半在 ...

  5. PHP + Redis 生成自定义订单编号

    /** * 订单编号生成规则 * 14位 = 6位时间 + 5位自增 + 3位ID * @param string $prefix 前缀: 默认为order * @param int $userId ...

  6. leetcode刷题-47全排列2

    题目 给定一个可包含重复数字的序列,返回所有不重复的全排列. 思路 其思路与46题完全一致,但是需要与组合总和2题一般,在同一层取出重复元素.因此可以在每一层设置一个set()类型,将访问过的元素放入 ...

  7. 使用镜像安装cygwin、gcc并配置CLion IDE -2020.09.12

    使用镜像安装cygwin.gcc并配置CLion IDE -2020.09.12 Cygwin 官网:http://www.cygwin.com/ 下载64bit安装器,并打开选择next 尽量不要装 ...

  8. Robotframework自动化1-Windows环境搭建

    前言: robotframework环境搭建-环境准备 1.python2,pip2 2.WxPython 3.Robot Framework 4.Robotframework-ride 5.RIDE ...

  9. Jackson精解第4篇-@JacksonInject与@JsonAlias注解

    Jackson是Spring Boot(SpringBoot)默认的JSON数据处理框架,但是其并不依赖于任何的Spring 库.有的小伙伴以为Jackson只能在Spring框架内使用,其实不是的, ...

  10. java工作三年应具备的技能

    LZ常常思考自己的未来,也从自己的思考中总结出了一些东西,作为第一部分来谈谈.LZ认为一名程序员应该有几个阶段(以下时间都算上实习期). 第一阶段:三年 我认为三年对于程序员来说是第一个门槛,这个阶段 ...