自己写个简易版的CURD
2016-03-31 16:24
375 查看
项目开发中,往往会写很多的查询,更新,插入语句,页面的代码看起来特别的乱.
在看过THINKPHP的Model后,决定照葫芦画瓢也弄个CURD,只为了让代码看起来更清爽.
db.operatorDB为数据库操作方法,可根据自己的需要进行添加.
调用方法如下:
在看过THINKPHP的Model后,决定照葫芦画瓢也弄个CURD,只为了让代码看起来更清爽.
var Model = function(tbname){ var _join = '',_order = '',_group = '',_where = '',_field = '',_limit = '',_table = ''; this.data = {}; _table = tbname; var that = this; this.table = function(p){ _table = p; return that; } this.field = function(p){ _field = p?p:"*"; return that; } this.join = function(p){ _join += " "+p; return that; } this.where = function(p){ //字符串 if(typeof p === "string"){ var arr = p.split('='); _where = " where "+arr[0]+"='"+arr[1]+"'"; } //数组 if(typeof p==="object" && (p instanceof Array)){ _where = " where "+p[0]; for(var i=1,m=p.length;i<m;i++){ var arr = p.split('='); _where = " and "+arr[0]+"='"+arr[1]+"'"; } } return that; } this.group = function(p){ _group = " group by "+p; return that; } this.order = function(p){ _order = " order by "+p; return that; } this.limit = function(start,length){ _limit = " limit "+start + (length?","+length:""); return that; } //CURD /* params:v-参数值,f-参数名,默认id */ this.create = function(callback){ var sql = "insert into "+_table+"($field) values($value)"; var _f = '',_v = '',_values = []; for(var key in this.data){ _f += "," + key; _v += ",?"; _values.push(this.data[key]); } sql = sql.replace('$field',_f.substr(1)).replace('$value',_v.substr(1)); //执行语句 // db.operatorDB(sql,_values,function(err, result){ // if (err) { // callback(null); // return; // } // callback(result); // }); callback(sql); } this.update = function(callback){ var sql = "update "+_table+" set $field"; var _f = '',_values = []; for(var key in this.data){ _f += "," + key + "=?"; _values.push(this.data[key]); } sql = sql.replace('$field',_f.substr(1))+_where; //执行语句 // db.operatorDB(sql,_values,function(err, result){ // if (err) { // callback(null); // return; // } // callback(result); // }); callback(sql); } this.select = function(callback){ //var sql = "`select ${_field} from ${_table} ${_join} ${_where} ${_group} ${_order} ${_limit}`"; var sql = "select "; sql += _field?_field:"*"; sql += " from " + _table + _join + _where + _group + _order + _limit; //执行语句,返回结果 // db.operatorDB(sql,null,function(err, result){ // if (err) { // callback(null); // return; // } // callback(result); // }); callback(sql); } //find调用get,使用select方法查询结果 this.find = function(v,f,callback){ this.get(v,f,callback); } this.get = function(v,f,callback){ this.where((f?f:"id")+"="+v).select(callback); } this.delete = function(){ var sql = "delete from "+_table+_where; //执行语句,返回结果 // db.operatorDB(sql,null,function(err, result){ // if (err) { // callback(null); // return; // } // callback(result); // }); callback(sql); } return this; };
db.operatorDB为数据库操作方法,可根据自己的需要进行添加.
调用方法如下:
//联合查询 var u = new Model("user"); u.where("name=1").join("left join dept d on user.id=d.id").order("user.id desc,d.id").select(function(s){ console.log(s); }); //插入/更新 var d = new Model("custom"); u.data["name"]="a"; u.data["id"]="1"; d.create(function(re){//d.where("id=1").update(... console.log(re); }); //简单查询 var u = new Model("user"); u.find(1,"",function(s){//u.get(1,... console.log(s); })
相关文章推荐
- Python:使用property装饰器将方法转为属性
- 一台电脑如何管理多个SSH KEY
- 第一周学习笔记
- objective-c类别和类扩展学习笔记
- nyoj 118 修路方案(最小生成树删边求多个最小生成树)
- Qos
- 再生龙u盘制作及使用 - Linux - clonezilla
- 学习OpenGL(三)绘制点
- Unix Study之--AIX安装和配置SSH
- CTF——啥
- jsp#1简单jsp开发
- TREEset的模板类
- Protocol Buffer技术详解(语言规范)
- 动态定义二维数组
- 不会做
- 排15个数
- 简单方法实现手势解锁
- iOS小知识点(非UI部分)
- hdu 2222 Keywords Search AC自动机模板题
- yum源配置