Spring Boot 实体类 Entity的自动生成,利用Python实现 sql 语句快速转换成 Java 代码(一)

这篇博客分享了如何使用Python脚本来自动化创建SpringBoot项目的实体类,从而简化Java后端开发中从MySQL数据库表到Entity的转换过程。通过建立数据库类型与Java类型映射,读取SQL文件,快速生成符合规范的实体类代码,提高开发效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引言

最近,自己开始学习Java后端开发,作为小白,在导师的指导下,一步步开始学习,从如何搭建springboot项目开始,连接上 MySQL 数据库之后,再创建和编写Entity、Controller、Service、Mapper程序。然而,面对枯燥的学习过程,未免心生惰性,那么,这时候,有些可以偷的懒一定要偷,省下来的时间去泡一杯茶、刷个视频、打一把游戏~~~~怎么偷懒呢?待我慢慢道来~~

情况分析:

经过两次 Sping Boot 项目的搭建经验,我发现在每一次项目主要功能实现代码开始编写之前,必须要先创建实体类 Entity 这个文件夹,对应数据库中的各种表在 Entity 中创建各类实体,比如,商品实体类 Product、订单实体类 Order,大概的样子如图:

aa5e86e0ec424e71961806be37709412.png

问题描述:

每次都要慢慢的看着 mysql 文件输入一堆的字段名,有的 Table 中的字段太多了,还害怕输错;其次,很头痛的是还要去对应数据类型,对于新手而言,可能第一次见到 MySQL 中的 decimal、datetime等等数据类型,都不知道它们在 Java 中的对应的数据类型是什么,还需要去找度娘进行科普。你是不是也有这样的烦恼?那么,这篇文章请你继续看完。

动手操作:

你有没有发现?这些实体的编写是有规律可循的,都是这样:

08e3d6a0e4a4436b94f794d1a147ea84.png

既然有规律,那偷懒的机会不就来了, “人生苦短,快用 Python ”,我们来浅写一个 Python 程序来帮帮忙~~~~

1、首先,去找度娘拿到数据库类型 Java 数据类型的对应关系映射表(直达链接获取),大概样子如下图。

99eb337daff34bf0b5b9ea987252caa3.png

2、整理好对应的数值类型对应字典:

type_dict = {'int': 'Integer', 'varchar': 'String', 'char': 'String', 'nchar': 'String',\
             'nvarchar': 'String', 'text': 'String', 'ntext': 'String', 'tinyint': 'Integer',\
             'smallint': 'Integer', 'bit': 'Boolean', 'bigint': 'Long', 'float': 'Double',\
             'decimal': 'BigDecimal', 'money': 'BigDecimal', 'smallmoney': 'BigDecimal',\
             'numeric': 'BigDecimal', 'real': 'Float', 'uniqueidentifier': 'String',\
             'smalldatetime': 'Timestamp', 'datetime': 'Date', 'timestamp': 'byte[]', 'binary': 'byte[]',\
             'varbinary': 'byte[]', 'image': 'byte[]', 'sql_variant': 'String', 'double':'Double'}

3、创建 change.py 文件来编写程序的实现方法,创建 sql.txt 文件来存放 MySQL 的语句;再创建一个空的 result.txt 文件用来接收转换结果。

877a556026b244eaa846c8d74349e296.png

4、sql.txt 文件存放从数据库中复制过来的 sql 语句,保持一个字段一行: 

265850001f81437ab3f5399c390db212.png

 5、编辑保存好 sql.txt 文件之后,关闭文件,再双击已经 “施过魔法”(编写好转换方法) 的 change.py 程序,即可1秒得到对应的 Spring Boot 实体类~~~有图有真相,看图:

2d5da1762e4342439996f18adeeaaf5d.png

 6、复制粘贴!!!把 result.txt 的内容粘贴到对应的实体类文件中即可~~~

0dbcb9301aec44cbb900a7e90f688102.png

 本文所介绍的功能,仅仅用了不到20行 Python 的代码,所以说,开发并不是难事,只要有心去做,就会有所收获。完整代码:

lines=open('sql.txt',encoding='utf-8').readlines()

res = ''
for i in range(len(lines)):
    line = lines[i].strip().split(' ')
    while '' in line:
        line.remove('')
    field = line[0].strip('`')
    kind = type_dict[line[1].split('(')[0]]

    spl = line[0].strip('`').split('_')
    for j in range(len(spl)):
        if j == 0:
            variable = spl[0]
        else:
            variable += spl[j][0].upper() + spl[j][1:]
         
    comment = lines[i].strip().split('comment')[1].replace('\'','').replace(',','').strip()
    if i == 0:
        res += f'\n\t/**\n\t* {comment}\n\t*/\n\t@TableId(value = "{field}", type = IdType.ASSIGN_ID)\n\tprivate {kind} {variable};'
    elif variable == 'isDeleted':
        res += f'\n\t@TableLogic\n\t/**\n\t* {comment}\n\t*/\n\t@TableField("{field}")\n\tprivate {kind} {variable};'
    else:
        res += f'\n\t/**\n\t* {comment}\n\t*/\n\t@TableField("{field}")\n\tprivate {kind} {variable};'

with open('result.txt', 'w', encoding='utf-8') as f:
    f.write(res)

下期预告:

考虑到本文所说的功能是为 Java 开发者服务的,可能你的电脑上没有 Python 环境运行 .py 文件,下期将编写一个小的图形界面,并封装成 .exe 可执行文件。

点击这里,查看下期博客分享~~~

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

破风_1874

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值