用世界上最好的语言python编写的Java代码生成器,私人订制,模版任意设置,使用此代码生成器1分钟可以迅速完成增删改查全部功能,并提供api接口。
本项目为Spring + Mybatis + mysql + dubbo代码生成器,但只要增加模版便可以完成你的私人订制代码生成器,不限语言。
本项目已包含以下模版:实体类模版,service服务类接口模版,service服务类实现模版,mapper数据库接口模版,mapper xml配置文件模版,dubbo provider和customer模版,Controller模版。
下面以mapper类为例介绍下代码生成的思路:
- 创建mapper类需要的关键字,类名、包名、创建人、创建时间等
# 创建Mapper
def create_mapper(createName,class_name, package, date):
c = {'package': package + '.Mapper',
'class_name': class_name,
'createName': createName,
'small_class_name': small_str(class_name),
'entity_package': package + '.entity.' + class_name,
'date': date}
s = render_template('mapper_templates.html', **c)
create_java_file(class_name + 'Mapper', package + '.mapper', s)
2.创建mapper接口文件模版
package {{ package }};
import {{ entity_package }};
import java.util.List;
/**
* 基本功能:{{ class_name }}数据库接口
* 创建人:{{ createName }}
* 创建时间: {{ date }}
**/
public interface {{ class_name }}Mapper {
List<{{ class_name }}> getAll{{ class_name }}({{ class_name }} {{ small_class_name }});
List<{{ class_name }}> get{{ class_name }}ByParams({{ class_name }} {{ small_class_name }});
int save{{ class_name }}({{ class_name }} {{ small_class_name }});
int delete{{ class_name }}({{ class_name }} {{ small_class_name }});
int update{{ class_name }}({{ class_name }} {{ small_class_name }});
}
3.html中填写关键词
<textarea id="fields" name="fields" style="width: 99%; height: 400px;">
{
"table": "studentLeave",
"class": "StudentLeave",
"type": "mysql",
"package": "cn.studyou",
"createName": "王杰",
"column": {
"id": "int",
"studentId": "int",
"examineNumber": "String",
"createId": "int",
"reason": "String",
"createDate": "String",
"startDate": "String",
"endDate":"String",
"status":"int"
}
}
</textarea>
4.接收html参数创建文件
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']
createName = j['createName']
d = time.strftime("%Y-%m-%d", time.localtime())
create_mapper(createName,class_name, package, d)
5.创建文件保存到本地
# 创建java文件
def create_java_file(class_name, package, text, suffix='.java'):
dirs = '/Users/wangjie/javaTemplate/' + package.replace('.', '/') + '/'
if not os.path.exists(dirs):
os.makedirs(dirs, 0o777)
del_file(dirs)
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)
前台操作页面
最终生成的文件
到此就完成了一个模版的创建,以此类推完成更多的模版。
在线代码生成地址:http://www.shengyiguanjia.xyz/index
使用方法:
- 在页面实体类中填写table、class等信息,然后点击提交,代码生成后点击下方下载文件地址即可下载到本地,本地打开zip压缩包即可看到所有生成的代码。
2.将生成的代码拷贝到项目中,修改mapper.xml中的resultMap 和 sql语句即可。
如果您感兴趣,请扫码下面二维码获取项目源码或交流学习。