自己写个简易版的CURD

来源:互联网 发布:位置大数据 编辑:程序博客网 时间:2024/04/29 16:13
项目开发中,往往会写很多的查询,更新,插入语句,页面的代码看起来特别的乱.

在看过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);})



1 0
原创粉丝点击