1 Star 0 Fork 8

red boy / auto-create-java

forked from jiang88 / auto-create-java 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
app.py 5.74 KB
一键复制 编辑 原始数据 按行查看 历史
jiang88 提交于 2018-07-25 15:36 . no commit message
# -*- coding: UTF-8 -*-
'''
Created on 2018年7月10日
通过模板自动生成java文件,可生成controller,service,dao,entity层等类,提供简单的list,findById,delete,save,update,page方法
@author: JL
'''
import os
import json
import time
import tarfile
from flask import Flask, render_template, send_from_directory, request
app = Flask(__name__)
@app.route('/index')
def index():
return render_template('create_class.html')
@app.route("/download/<filename>", methods=['GET'])
def downloader(filename):
# 指定文件下载目录,默认为当前项目根路径
dirpath = os.path.join(app.root_path, '')
# as_attachment=True 表示下载
return send_from_directory(dirpath, filename, as_attachment=True)
@app.route('/createClass', methods=['GET', 'POST'])
def create_class():
file_name = msg = None
# {'column': {'age': 'int', 'id': 'String', 'address': 'String', 'name': 'String'}, 'table': 'cc_user'}
fields = request.form['fields']
if len(fields) <= 0:
msg='request data json is null!'
print(fields)
j = json.loads(fields, encoding='utf-8')
class_name = j['class']
package = j['package']
db_type = j['type']
if len(class_name) <= 0 :
msg = 'className is null!'
if len(package) <= 0:
msg = 'package is null'
if len(db_type) <= 0:
msg = 'type is null'
print(class_name + '\n' + package)
if not msg or len(msg) <= 0:
d = time.strftime("%Y-%m-%d", time.localtime())
entity = request.form.get('entity')
if entity and len(entity) >= 1:
print('--- create entity class')
create_entity(class_name, package, j['table'], j['column'], db_type, d)
dao = request.form.get('dao')
if dao and len(dao) >= 1:
print('--- create dao class')
create_dao(class_name, package, d)
service = request.form.get('service')
if service and len(service) >= 1:
print('--- create service class')
create_service(class_name, package, d)
controller = request.form.get('controller')
if controller and len(controller) >= 1:
print('--- create controller class')
create_controller(class_name, package, d)
file_name = make_targz()
return render_template('create_class.html', msg=msg, file_name=file_name)
# 创建entity
def create_entity(class_name, package, table_name, columns, db_type, date):
propertys = ''
methods = ''
if columns:
for key in columns.keys():
propertys += 'private %s %s;' % (columns[key], key) + '\n'
p1 = 'public void get%s() {\nreturn this.%s;\n}' % (key.title(), key)
p2 = 'public %s set%s(%s %s) {\nthis.%s = %s;\n}' % (columns[key], key.title(), columns[key], key, key, key)
methods += p1+'\n'+p2
c = {'package': package + '.entity',
'entity_package': package + '.entity.' + class_name,
'class_name': class_name,
'table_name': table_name,
'propertys': propertys,
'methods': methods,
'date': date}
if db_type == 'mongodb':
s = render_template('entity_mongodb_templates.html', **c)
create_java_file(class_name, package + '.entity', s)
elif db_type == 'mysql':
s = render_template('entity_mysql_templates.html', **c)
create_java_file(class_name, package + '.entity', s)
s = render_template('entity_mysql_mapper_templates.html', **c)
create_java_file(class_name, package + '.entity', s, 'Mapper.xml')
# 创建Dao
def create_dao(class_name, package, date):
c = {'package': package + '.dao',
'class_name': class_name,
'entity_package': package + '.entity.' + class_name,
'date': date}
s = render_template('dao_templates.html', **c)
create_java_file(class_name + 'Dao', package + '.dao', s)
# 创建Service
def create_service(class_name, package, date):
c = {'package': package + '.service',
'class_name': class_name,
'small_class_name': small_str(class_name),
'entity_package': package + '.entity.' + class_name,
'dao_package': package + '.dao.' + class_name + 'Dao',
'date': date}
s = render_template('service_templates.html', **c)
create_java_file(class_name + 'Service', package + '.service', s)
# 创建controller
def create_controller(class_name, package, date):
c = {'package': package + '.entity',
'class_name': class_name,
'small_class_name': small_str(class_name),
'entity_package': package + '.entity.' + class_name,
'dao_package': package + '.dao.' + class_name + 'Dao',
'service_package': package + '.dao.' + class_name + 'Service',
'date': date}
s = render_template('controller_templates.html', **c)
# print(s)
create_java_file(class_name + 'Controller', package + '.controller', s)
# 将首字母转换为小写
def small_str(s):
if len(s) <= 1:
return s
return (s[0:1]).lower() + s[1:]
# 创建java文件
def create_java_file(class_name, package, text, suffix='.java'):
dirs = 'D:/temp/python/'+package.replace('.', '/')+'/'
if not os.path.exists(dirs):
os.makedirs(dirs, 0o777)
fd = os.open(dirs + class_name + suffix, os.O_WRONLY | os.O_CREAT)
os.write(fd, text.encode(encoding="utf-8", errors="strict"))
os.close(fd)
#生成tar.gz压缩包
def make_targz():
file_name = 'com.tar.gz'
source_dir = 'D:/temp/python/'
with tarfile.open(file_name, "w:gz") as tar:
tar.add(source_dir, arcname=os.path.basename(source_dir))
return file_name
if __name__ == '__main__':
app.run()
Python
1
https://gitee.com/redboy88_admin/auto-create-java.git
git@gitee.com:redboy88_admin/auto-create-java.git
redboy88_admin
auto-create-java
auto-create-java
master

搜索帮助