一个用于将sql脚本转换成实体类的js代码
以前写过一段C#,苦于编译才能用。这样的小工具最好是用脚本语言来编写,易于执行,也易于修改。
js 代码 convert.js
--------------------------------------------------
String.prototype.trim=function(){
return this.replace(/(^\s*)|(\s*$)/g, "");
}
String.prototype.ltrim=function(){
return this.replace(/(^\s*)/g,"");
}
String.prototype.rtrim=function(){
return this.replace(/(\s*$)/g,"");
}
String.prototype.startWith=function(str){
var reg = new RegExp("^" + str);
return reg.test(this);
} var ConvertCode = {
content: "",
run: function(){
console.writeline(this.content); if( !this.content) return; var lines = this.content.split('\n');
var ret = "";
for(var i=0; i<lines.length; i++)
{
var dataInfo = this.convertLine(lines[i]);
if(!dataInfo) continue; ret = ret + "///<summary>\n";
ret = ret + "///\n";
ret = ret + "///<summary>\n";
ret = ret + '[DBColumn("' + dataInfo.column + '")]\n';
ret = ret + "public " + dataInfo.dataType + " " + dataInfo.name + "{get;set;}\n\n";
} return ret;
}, convertLine: function(line){
line = line.trim();
if(line.length == 0) return null; var tokens = line.split(/\s+/);
if(tokens.length <= 1) return null; return {
column: tokens[0],
name: this.toNormalName(tokens[0]),
dataType: this.toDataType(tokens[1])
};
}, toNormalName: function(raw) {
var tokens = raw.split('_'); var ret = "";
for(var i=0; i<tokens.length; i++)
{
ret = ret + tokens[i].substr(0,1).toUpperCase() + tokens[i].substr(1);
} return ret;
}, toDataType: function(d) {
if(!d) return null; if(d.startWith("varchar") || d.startWith("char")) return "string";
if(d.startWith("int")) return "int";
if(d.startWith("number")) return "decimal";
if(d.startWith("date")) return "DateTime";
return null;
}
}
html 代码用于调用它
----------------------------------
<html>
<head>
<meta charset='gbk' />
<script type='text/javascript' src="convert.js"></script>
<script language="javascript" type='text/javascript'> var doparse = function(){
var parser = ConvertCode;
parser.content = document.getElementById('content').value; var result = parser.run(content); document.getElementById('divResult').value = result;
console.writeline( document.getElementById('divResult').value);
}
</script>
</head>
<body>
<div><input type="button" value="转换" onclick="javascript:doparse();" style="width:50px; height: 30px;"/></div>
<div style="float:left; width: 500px;">
<textarea id='content' style="width:500px; height:600px;"></textarea>
</div>
<div style="float:left; width:500px; margin-left:30px;" >
<textarea id="divResult" style="width:500px; height:600px;"></textarea>
</div> </body>
</html>
一个用于将sql脚本转换成实体类的js代码的更多相关文章
- C# 将DataTable数据源转换成实体类
using System; using System.Collections.Generic; using System.Data; using System.Reflection; /// < ...
- 使用Sql语句快速将数据表转换成实体类
开发过程中经常需要根据数据表编写对应的实体类,下面是使用sql语句快速将数据表转换成对应实体类的代码,使用时只需要将第一行'TableName'引号里面的字母换成具体的表名称就行了: declare ...
- hibernate sql查询后对象转换成实体类
在多表查询的时候使用hibernate的sql查询的时候,一般返回的是object[]数组,或者可以使用 session.createSQLQuery(sql).setResultTransform ...
- 远程调用get和post请求 将返回结果转换成实体类
package org.springblade.desk.utils; import org.apache.http.client.ResponseHandler; import org.apache ...
- js-input框中写入的小写小写字母全部转换成大写字母的js代码
<input type="text" id="blinitials" name="blinitials" onkeyup=" ...
- sql hibernate查询转换成实体或对应的VO Transformers
sql查询转换成实体或对应的VO Transformers //addScalar("id") 默认查询出来的id是全部大写的(sql起别名也无效,所以使用.addScalar(& ...
- DataTable转换成实体
public static class DataTableToEntity { /// <summary> /// 将DataTable数据源转换成实体类 /// </summary ...
- xml格式报文的拼装,和解析成实体类
我们的微信支付,使用的是第三方的支付,某银行的微信支持渠道.所有的接口请求.应答都是xml格式报文,这样就需要用到xml格式报文的拼装和解析,这儿简单讲一下. 拼接xml格式报文. 从页面表单提交和配 ...
- 使用py2exe将python脚本转换成exe可执行文件
Python(wiki en chs)是一门弱类型解释型脚本语言,拥有动态类型系统和垃圾回收功能,支持多种编程范式:面向对象.命令式.函数式和过程式编程. 由于Python拥有一个巨大而广泛的标准库 ...
随机推荐
- jvm 哪些是不会被gc回收的
韩梦飞沙 yue31313 韩亚飞 han_meng_fei_sha 313134555@qq.com
- HDU 4388 Stone Game II 博弈论 找规律
http://acm.hdu.edu.cn/showproblem.php?pid=4388 http://blog.csdn.net/y1196645376/article/details/5214 ...
- ccpc秦皇岛部分题解
A. 题意:就是有一个大桌子,环绕有顺势站1~m共m个座位,n个选手坐在部分位置上.然后如果有一个人a了一道题,却没有立刻发气球给他,他产生怒气值是发气球给他的时间减去a题时间.现在有一个机器人顺时针 ...
- ARC-100 E - Or Plus Max
题面在这里! 我们如果可以求出 f[x] = max{ a[i] + a[j] , i!=j && i or j == x},那么就可以通过前缀max直接递推答案了. 但是这个玩意不是 ...
- BZOJ 1700 [Usaco2007 Jan]Problem Solving 解题(单调DP)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1700 [题目大意] 共有p道题目要做,每个月收入只有n元,用于付钱做题之外的部分都会吃 ...
- Django contenttypes 框架详解
一.什么是Django ContentTypes? Django ContentTypes是由Django框架提供的一个核心功能,它对当前项目中所有基于Django驱动的model提供了更高层次的抽象 ...
- MySQL InnoDB引擎锁的总结
为什么要锁 我们开的的各式各样系统中,系统运行需要CPU.内存.I/O.磁盘等等资源.但除了硬资源外,还有最为重要的软资源:数据. 当人们访问操作我们的系统时,其实归根是对数据的查看与生产.那么对于同 ...
- CentOS 6.9使用iptables搭建网关服务器(转)
条件: 网关服务器IP:172.16.0.1,并且可以连接到外网 客户端IP:172.16.0.0/24 1.开启转发支持forward /etc/sysctl.conf net.ipv4.ip_fo ...
- 在代码中加载storyBoard中的ViewController
首先, 要在storyBoard中画出想要的VC, 然后建一个VC类和他关联.如图 : 调用时找如下写: DetailViewController *detailVC = [[UIStoryboard ...
- IntelliJ IDEA的几种常见的快捷键
在编写代码的时候直接输入psv就会看到一个psvm的提示,此时点击tab键一个main方法就写好了. psvm 也就是public static void main的首字母. 依次还有在方法体内键入f ...