python 生成java entity脚本

生成java实体的脚本

import MySQLdb
import sys

dbhost=‘192.168.2.200‘
dbport=3306
dbuser=‘root‘
dbpassword=‘zufangbao69fc‘
dbname=‘houseloan‘

dbtypes = {‘int‘:‘Integer‘, ‘bigint‘:‘Long‘, ‘bit‘:‘Boolean‘, ‘datetime‘:‘Date‘, ‘decimal‘:‘BigDecimal‘, ‘varchar‘:‘String‘}
defvalues = {‘int‘:‘0‘, ‘bigint‘:‘0L‘, ‘bit‘:‘false‘, ‘datetime‘:‘new Date()‘, ‘decimal‘:‘BigDecimal.ZERO‘, ‘varchar‘:‘StringUtils.EMPTY‘}
def genEntity():
    if len(sys.argv)<2:
        print ‘pls input tablename,eg: python entity.py T_User‘
        return
    tablename=sys.argv[1]
    try:
        conn=MySQLdb.connect(host=dbhost,user=dbuser,passwd=dbpassword,port=dbport,charset="utf8")
        cur=conn.cursor()
        conn.select_db(dbname)
        count=cur.execute("select * from information_schema.COLUMNS where TABLE_SCHEMA=‘" + dbname + "‘ and TABLE_NAME=‘" + tablename + "‘")
        results=cur.fetchall()
        publicStr = ‘\r\n‘
        print ‘@Entity‘
        print ‘@Table(name = "%s")‘ % tablename
        print ‘public class %s implements Serializable {‘ % getEntityName(tablename)
        for r in results:
            print ‘\t/**‘
            print ‘\t * %s‘ % (‘‘ if r[19] is None else r[19].replace(‘\r‘,‘‘).replace(‘\n‘,‘‘))
            print ‘\t */‘
            print ‘\[email protected](name = "%s")‘ % r[3]
            if r[16] is not None and r[16] == ‘PRI‘:
                print ‘\[email protected]‘
                if r[17] is not None and r[17]==‘auto_increment‘:
                    print ‘\[email protected](strategy = GenerationType.AUTO)‘
                print ‘\tprivate %s %s;‘ % (getType(r[7]), getFieldName(r[3]))
            else:
                print ‘\tprivate %s %s = %s;‘ % (getType(r[7]), getFieldName(r[3]), getDefaultValue(r[7], r[5]))

            publicStr = ‘%s\r\n\t/**\r\n\t * get <tt>%s</tt> %s\r\n\t */\r\n\tpublic %s get%s(){\r\n\t\treturn %s;\r\n\t}\r\n\r\n\t/**\r\n\t * set <tt>%s</tt> %s\r\n\t */\r\n\tpublic void set%s(%s %s){\r\n\t\tthis.%s = %s;\r\n\t}\r\n‘ % (publicStr,getFieldName(r[3]), ‘‘ if r[19] is None else r[19].replace(‘\r‘,‘‘).replace(‘\n‘,‘‘), getType(r[7]), getPublicFieldName(r[3]), getFieldName(r[3]), getFieldName(r[3]), ‘‘ if r[19] is None else r[19].replace(‘\r‘,‘‘).replace(‘\n‘,‘‘), getPublicFieldName(r[3]), getType(r[7]), getFieldName(r[3]), getFieldName(r[3]), getFieldName(r[3]))
        print publicStr
        print ‘}‘
        cur.close()
        conn.close()
    except MySQLdb.Error, e:
        print "Mysql error %d: %s" %(e.args[0], e.args[1])

def getEntityName(tablename):
    entityName=tablename
    if tablename.startswith(‘T_‘):
        entityName = tablename[2:]
    entityName = entityName.replace(‘_‘,‘‘)
    return ‘%sEntity‘ % entityName

def getType(type):
    return dbtypes[type]

def getFieldName(field):
    return "%s%s" % (field[0].lower(),field[1:])

def getPublicFieldName(field):
    return ‘%s%s‘ % (field[0].upper(), field[1:])

def getDefaultValue(type, defval):
    if type == ‘int‘ and defval is not None and len(defval)>0:
        return defval
    else:
        return defvalues[type]

genEntity()

  

时间: 2024-10-17 05:28:24

python 生成java entity脚本的相关文章

Python生成Redis模板脚本

#!/usr/bin/env python #-*- encoding:utf8 -*- #--------------------------------------------------------------------------------------- #           FILE:    Gen_Redis Config.py #    #          USAGE:    Python_Code_Style.txt [-h] [Copy PEP 8] # #    DE

python生成密码小脚本

script01 import re, random, string count1 = int(input('请输入密码个数(必须大于0): ')) i = 0 passwds = [] while i < count1: tmp = random.sample(string.ascii_letters + string.digits, 10) passwd = ''.join(tmp) if re.search('[0-9]', passwd) and re.search('[A-Z]', p

uiautomatorviewer 优化定位符生成,支持生成Java,Python自动化代码

项目介绍 二次开发 uiautomatorviewer 优化定位符生成,支持生成Java,Python自动化代码,修复自带工具画面有动态加载时截图失败问题,优化自带工具截图速度 ,实现类似录制脚本功能.兼容IOS安卓. 软件架构 本工具以安卓SDK自带uiautomatorviewer为源码基础,在此上进行深度二次开发. 优化定位符Xpath生成,提取相对短的Xpath,解决自带工具Xpath太长不友好的问题 修复自带uiautomatorviewer截图报错,无法截图的Bug 优化截图速度优化

Python 实现数据库更新脚本的生成

我在工作的时候,在测试环境下使用的数据库跟生产环境的数据库不一致,当我们的测试环境下的数据库完成测试准备更新到生产环境上的数据库时候,需要准备更新脚本,真是一不小心没记下来就会忘了改了哪里,哪里添加了什么,这个真是非常让人头疼.因此我就试着用Python来实现自动的生成更新脚本,以免我这烂记性,记不住事. 主要操作如下: 1.在原先 basedao.py 中添加如下方法,这样旧能很方便的获取数据库的数据,为测试数据库和生产数据库做对比打下了基础. 1 def select_database_st

python 处理java生成的证书流程

python 处理java生成的证书流程,以及公钥私钥加密,加签验签,aes加解密(这里用的是M2Crypto库里面的RSA X509 EVP) java生成的jks证书python不能直接使用需要转换成pem格式可用以下命令(需要先安装keytool(网上很多例子)) keytool -importkeystore -srckeystore xxxx.jks -destkeystore xxxx.p12 -srcstoretype jks -deststoretype pkcs12 上一命令只

Python 应用闭包思路动态生成unittest执行脚本---分析问题,解决问题,记录填坑。

至于为什么要动态生成unittest执行脚本,以及设计思路,代码阅读参考前文,传送门.好了,本文我们就上一篇文章中的问题做一下分析,记录一下填坑之路吧,这个坑真特么深,挣扎了好久才出来. 首先我们先说一下问题在哪,因为使用了闭包,闭包会绑定变量无法清除无法更改,假如我第一次运行testall函数循环两次,第一次是正常的,第二次运行testall函数循环一次,那么生成的报告就会出现问题,会出现第一次运行的结果.即是:后一次循环运行只要比前一次循环少,那么report一定会出现前一次的结果,必先的b

Golang、Php、Python、Java基于Thrift0.9.1实现跨语言调用

目录: 一.什么是Thrift? 1) Thrift内部框架一瞥 2) 支持的数据传输格式.数据传输方式和服务模型 3) Thrift IDL 二.Thrift的官方网站在哪里? 三.在哪里下载?需要哪些组件的支持? 四.如何安装? 五.Golang.Java.Python.PHP之间通过Thrift实现跨语言调用 1) Golang 客户端和服务端的实现及交互 2) python 客户端的实现与golang 服务端的交互 3) php 客户端的实现与golang 服务端的交互 4) java

使用Python生成源文件的两种方法

利用Python的字符串处理模块,开发者能够编写脚本用来生成那些格式同样的C.C++.JAVA源程序.头文件和測试文件,从而避免大量的反复工作. 本文概述两种利用Python string类生成java源码的方法. 1.String Template Template是一个好东西,能够将字符串的格式固定下来,反复利用.Template也能够让开发者能够分别考虑字符串的格式和其内容了.无形中减轻了开发者的压力. Template属于string中的一个类,有两个重要的方法:substitute和s

六种流行的语言---C、C++、python、Java、php、C#比较[转]

语言大餐 回归正题,本文是六种语言连接mysql数据库的代码展示,在LZ尝试的过程中,无论是语言环境搭建.mysql依赖库的导入还是代码的风格,各种语言都各有千秋.接下来,我们就让这些语言一一登场吧. Java(最具噱头的语言) Java给新人的印象应该是入门简单.代码优雅.活跃度高.跨平台.开源大家庭等等,实在是当之无愧的明星语言,而且是偶像派的.不过可惜的是,偶像派明星很容易被干掉.Java语言是LZ赖以生存的语言,因此LZ不希望做个偶像派,只能奋起直追,争取做实力派的Javaer. 说起这