前言
之前,在 Sping Boot 项目搭建过程中,利用 Python 实现 sql 语句快速转换成 Java 代码,自动生成注解和注释、转驼峰命名,从而得到 Spring Boot 项目中需要的实体类 Entity 内容,告别手动输入,实现懒人操作,具体分析见上一次的博客文章。
本篇主要分享:如何为实现的功能设计一个图形界面,以及如何把编写好的程序打包成 .exe 形式的可执行文件。
打包完成后,即使你是一个纯 Java 开发者,你的电脑上没有 Python 环境,也可以使用 SqlToJava 小工具来 “偷懒”啦~~~~
【如果你对 Python 开发过程不感兴趣,可跳到文章末尾,直接获取 SqlToJava小工具.exe 下载地址】
开始动手操作
1. 利用 Python 编写、设计 SqlToJava 小工具图形界面。
(1)准备好 JBDC 类型和 Java 类型数值的对应关系映射表,即字典 TYPE_DICT,如下:
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'}
(2)编写 process 函数对 Sql 语句进行转换处理,返回需要的 Java 代码,即 Spring Boot 项目中的实体类 Entity 中的内容。Python 实现代码如下:
def process(context):
lines = context.strip().split("\n")
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};'
return res
(3)导入 Tkinter 模块,创建一个窗口,在窗口中再创建两个文本框,一个是用来获取 Sql 语句的 input_text,一个是用来返回处理结果的 result_text 。然后,点击 Change 按钮开始对输入的 Sql 语句进行转换,转换结果显示在 result_text 文本框中,Clean 按钮可以对 input_text 文本框进行清空操作。来看看代码吧:
from tkinter import *
from tkinter import messagebox
root = Tk()
root.title("SqlToJava小工具")
root.resizable(0,0)
root.configure(bg="#bbb")
root.geometry('1100x610')
l1 = Label(root, text="Sql:", background="#bbb", font=('宋体', '12')).place(x=50, y=25)
input_text = Text(root, bg="#eee", font=('宋体', '12'))
input_text.pack() # 实例化文本框,否则对文本框内容get、delete、insert时会报'NoneType'
input_text.place(x=50, y=70, width=450, height=450)
l2 = Label(root, text="Result:", background="#bbb", font=('宋体', '12')).place(x=590, y=20)
result_text = Text(root, bg="#eee", font=('宋体', '12'))
result_text.pack()
result_text.place(x=590, y=65, width=450, height=500)
def on_click_clean():
input_text.delete(1.0,END)
def on_click_output():
context = input_text.get('0.1','end')
try:
result = process(context)
result_text.delete(1.0,END)
result_text.insert(END,result)
except:
string ='未发现数据!请重新输入! '
messagebox.showinfo(title='提示', message = string)
button_clean = Button(root, text="Clean", bg="#7AD4F1", font=('Arail', '10'), command = on_click_clean)
button_clean.place(x=305, y=550, width=60, height=25)
button_change = Button(root, text="Change", bg="yellow", font=('Arail', '10'), command = on_click_output)
button_change.place(x=380, y=550, width=100, height=25)
root.mainloop()
ps:记得实例化文本框哦,即 pack,不然对文本框内容进行 get、delete、insert 操作时,会报 'NoneType',这个我也在代码中标注提示了。
(4)运行代码,在左边的文本框中输入 Sql 语句(注意一行一个字段),点击 Change 按钮,在 Result 中查看结果。下次转换之前,点击 Clean 按钮清空 Sql 文本框的内容,直接开始。有图有真相,看图:
2. 打包程序,将 SqlToJava 小工具封装成 .exe 形式的可执行文件。
(1)打开 Anaconda Prompt (Anaconda),使用 pip 命令安装 Pyinstaller 。
pip install pyinstaller
(2)下载一个(可爱的) .ico 格式的图标:
.ico 图标下载网址:爱给网
(3)创建 Python 虚拟环境。
#创建虚拟环境
conda create -n aotu python=3.6
#激活虚拟环境
conda activate aotu
ps:虚拟环境中打包出来的 .exe 文件内存更小,没有安装虚拟环境或者想了解更多细节前往参考博客链接。
(4)在虚拟环境中,下载需要用到的 tkinter 库。
#tkinter安装
pip install tk
(5)开始打包。
#Pyinstaller打包
Pyinstaller -F -w -i logo.ico change.py
(4)进入打包完成的文件夹,可以在 dist 目录下看到 change.exe 文件,双击即可使用 SqlToJava 小工具。
最后,重命名 change.exe 为 “SqlToJava小工具 v1.0”,再拖到桌面,就可以随时双击打开使用了:
附录: Python 源码、SqlToJava小工具 v1.0.exe 下载__Gitee 地址 。
【如果你觉得文章有用,记得点赞、收藏、关注哦!你的点赞是我创作的无限动力】