编写一个工具, 从 DDL SQL 自动生成 POJOs

本文介绍了一种使用Python脚本自动化从DDL SQL创建POJO对象的方法,避免了手动转换的繁琐工作。文章详细阐述了算法步骤,包括创建POJO字符串模板、解析DDL、整理字段和类型,并将信息填充到模板中生成Java类。同时提供了Python代码实现和测试案例。
摘要由CSDN通过智能技术生成

Python 让繁琐工作自动化

在这里插入图片描述

原因每次写完 DDL SQL 再手动对应的 POJOs,太繁琐了,为什么不写个脚本自动化下呢(还可以顺带检测下自己算法能力),说干就干,这就来了。

WARNING ⚠:别学我,IDEA 有 DDL 一键生成 POJOs 插件,我丫的是 VSCode 党 o( ̄┰ ̄*)ゞ

算法步骤

  1. 建立一个 POJO 字符串模板,可以直接填充包名导入语句类名字段语句
  2. 解析 DDLSQL 语句,得到类名(table name)、字段名类型(column name and type)
  3. 从 2 中的得到的字段名和类型,整理出来字段语句导入语句
  4. 包名导入语句类名字段语句填充到 POJO 字符串模板中得到完整的 java class 字符串,return 、print 或 write to file

代码实现 - Python

python,粘贴即使用,真方便

"""
从 DDL SQL 生成 java POJO

- 列名即 java field 名,不做下划线、驼峰命名等转换
- 使用 Lombok 注解替换 setter/getter
"""

from typing import Dict, List
import re

MYSQL_DATATYPE_NUMBER =  {
   'TINYINT', 'SMALLINT', 'MEDIUMINT', 'INT', 'INTEGER', 'BIGINT', 'FLOAT', 'DOUBLE', 'DECIMAL'}
MYSQL_DATATYPE_DATE = {
   'DATE', 'TIME', 'DATETIME', 'TIMESTAMP'}
MYSQL_DATATYPE_TEXT = {
   'CHAR', 'VARCHAR', 'TINYBLOB', 'TINYTEXT', 'BLOB', 'TEXT', 'MEDIUMBLOB', 'MEDIUMTEXT', 'LONGBLOB', 'LONGTEXT'}

POJO_TEMPLAATE = """package {package};

{imports}
import lombok.Data;

@Data
public class {name} {
   {
    
    {fields}
}}"""

def __generate_pojo_text(package_name: str, class_name: str, columns: Dict[str,str]) -> str:
    """
    生成 pojo 文本
    """

    field_rows = []
    import_rows = set()
    field_template = "private {} {};"
    for name, type in columns.items():
        field_class = __sql_java_type_mapping(type)
        if field_class == "BigDecimal":
            import_rows.add("import java.math.BigDecimal")
        elif "Local" in field_class:
            import_rows.add("import java.time.{};".format
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值