一个用于将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拥有一个巨大而广泛的标准库 ...
随机推荐
- qwb与学姐 (带秩并查集)
qwb与学姐 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 149 Solved: 54[Submit][Status][Web Board] Des ...
- BM算法--串匹配
BM(Boyer-Moore)算法,后缀匹配,是指模式串的比较从右到左,模式串的移动也是从左到右的匹配过程,一般情况比KMP算法要快.时间复杂度O(m/n) C++描述(教师版) int BM(cha ...
- BZOJ 3399 [Usaco2009 Mar]Sand Castle城堡(贪心)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3399 [题目大意] 将一个集合调整成另一个集合中的数,把一个数+1需要消耗x,-1需要 ...
- 【贪心】hdu6180 Schedule
题意:给你n个任务的开始时间和结束时间,一个机器同时最多执行一个任务,问你最少要几个机器.保证机器最少的前提下,问你每个机器的开动时间(最后一次关闭-第一次开启)之和最少是多少. 把这些线段画在数轴上 ...
- 【贪心】【set】zoj3963 Heap Partition
贪心地从前往后扫,每到一个元素,就查看之前的元素中小于等于其的最大的元素是否存在,如果存在,就将它置为其父亲.如果一个结点已经是两个儿子的父亲了,就不能在set中存在了,就将他删除.如果然后将当前元素 ...
- ajax 同步和异步的区别
举个例子:普通B/S模式(同步)AJAX技术(异步)同步:提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事异步: 请求通过事件触发->服务器处理(这时浏览 ...
- VB里的TEXT控件只能输入数字的代码
" '先声明一个常量,并把你想禁用或允许输入的内容赋值给它 Private Sub Text1_KeyPress(KeyAscii As Integer) '只能输入数字 KeyAscii ...
- Windows下生成 公钥 私钥以及 配置 Filezilla中的 SFTP的私钥
Win下需要使用到 PuTTYgen.exe来生成公钥私钥,可以参考youtube的这篇文章: 为 SFTP 保管箱生成 Secure Shell (SSH) 密钥对 PuTTYgen.exe的下载 ...
- CFR Java Decompiler 反编译
java反编译,JAD & CFR 目前我们开发中大都使用JAD进行java反编译.这个工具已经过于陈旧,最突出的问题就是经常反编译出错. 使用CFR反编译工具能够很好的解决这个问题,并且支持 ...
- ajax常用请求方式
1.JAVA @RequestMapping(value = "testAjax") @ResponseBody public Map<String, Object> ...