python写代码生成脚本

来源:互联网 发布:java的设计模式 编辑:程序博客网 时间:2024/06/06 04:21

每天写的代码会有很多重复性工作,比如每个新功能的model、service、dao 类和接口的新建。

昨晚用python里Template写了一个自动生成的脚本,贴出代码分享。

import osimport sysfrom string import Templatedef produceModel(parameters):modelClass(parameters)defModelHBM(parameters)def produceService(parameters):serviceInter(parameters)serviceImpl(parameters)def produceDao(parameters):daoInter(parameters)daoImpl(parameters)def modelClass(parameters):code = Template('''package\npublic class ${className} {\n${attribute}${methods}}''')name = parameters[0]# class nameargv2 = parameters[1]attribute = ""methods = ""properties = argv2.split(",")for x in range(len(properties)):prop = properties[x].split(":")propType = prop[1]propName = prop[0]attribute += "\tprivate " + propType + " " + propName + ";\n"methods += "\tpublic "+propType+" set"+propName.capitalize()+"("+propType+" "+propName+") {\n\t\tthis."+propName+" = " + propName + ";\n\t}\n"methods += "\tpublic void get"+propName.capitalize()+"() {\n\t\treturn "+propName+";\n\t}\n"fileStr = code.substitute(className=name, attribute=attribute, methods=methods)saveFile(fileStr, name+".java")def defModelHBM(parameters):code = Template('''<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping PUBLIC     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping><class name="${name}" table="${name}">${property}</class></hibernate-mapping>''')name = parameters[0]# class nameargv2 = parameters[1]property = ""properties = argv2.split(",")for x in range(len(properties)):prop = properties[x].split(":")property += "\t\t<property name=\""+prop[0]+"\" />\n"fileStr = code.substitute(name=name, property=property)saveFile(fileStr, name+".hbm.xml")def serviceInter(parameters):code = Template('''package\npublic interface ${name}Service extends GenericManager<${name}, Integer> {}''')name = parameters[0]fileStr = code.substitute(name=name)saveFile(fileStr, name+"Service.java")def serviceImpl(parameters):code = Template('''package\npublic class ${name}ServiceImpl extends GenericManagerImpl<${name}, Integer> implements ${name}Service{private ${name}Dao ${namelow}Dao;public ${name}ServiceImpl(${name}Dao ${namelow}Dao){super(${namelow}Dao);this.${namelow}Dao = ${namelow}Dao;}}''')name = parameters[0]namelow = name.lower()fileStr = code.substitute(name=name, namelow=namelow)saveFile(fileStr, name+"ServiceImpl.java")def daoInter(parameters):code = Template('''package\npublic interface ${name}Dao extends GenericDao<${name}, Integer> {}''')name = parameters[0]fileStr = code.substitute(name=name)saveFile(fileStr, name+"Dao.java")def daoImpl(parameters):code = Template('''package\npublic class ${name}ServiceImpl extends GenericManagerImpl<${name}, Integer> implements ${name}Service{private ${name}Dao ${namelow}Dao;public ${name}ServiceImpl(${name}Dao ${namelow}Dao){super(${namelow}Dao);this.${namelow}Dao = ${namelow}Dao;}}''')name = parameters[0]namelow = name.lower()fileStr = code.substitute(name=name, namelow=namelow)saveFile(fileStr, name+"DaoImpl.java")def saveFile(code, path):print pathf = open(path,'w')f.write(code)f.close()#param1 ModelName#param2 Propertiesdef main():parameters = sys.argv[1:]number = len(parameters)if (number < 2):print "Error parameters"else :produceModel(parameters);produceService(parameters);produceDao(parameters);if __name__ == "__main__":main()

使用方法:

控制台输入命令,自动生成model对象、hibernate映射文件、service接口、service实现类、dao接口、dao实现类

C:\Documents and Settings\Administrator\桌面>ProduceCode.py Person id:String,name:String,sex:int,age:intPerson.javaPerson.hbm.xmlPersonService.javaPersonServiceImpl.javaPersonDao.javaPersonDaoImpl.java

生成文件如图:


生成代码如图:

以上代码木板是按照我搭的框架配置的,对于不同框架改代码模板即可。


原创粉丝点击