之前在學習NodeJs的時候,每次操作數據庫都需要連接數據庫然后開始寫Sql操作,這樣非常麻煩,然后自己對Mysql進行了封裝,一共100多行代碼。
github地址: Mysql操作
我在里面對Mysql基本操作--增刪改查進行了封裝,在處理NodeJs的異步回調時使用了原型擴展、Promise規范的Q,我覺得Q的設計容易理解,便於使用。
因為大部分的查詢需要返回數據,所以根據數據庫表中字段設置相同的字段,下面會介紹,而修改、刪除、增加數據都只需要返回是否成功,所以會返回0/1作為判斷。
調用方式
首先創建一個Js文件main.js,我使用的是Node Express web框架,這樣在處理前端靜態資源和get/post請求時非常輕松,以后有興趣可以自己寫一個web框架。
創建數據庫Article,字段articleId,articleName,date。然后我們會查詢articleId和articleName。
var express = require("express"); var app = express(); var Mysql = require("./Mysql/Mysql2"); app.get("/Query",function(request,response){ var query = "select * from Article"; var mysql = new Mysql.createMysql({ database:"blog", //設置數據庫名 response:response, query:query, config:["articleId","articleName"] //配置需要顯示在前端的字段 }); mysql.Query(); }); var server = app.listen(9090,function(){ var host = server.address().address; var port = server.address().port; console.log("應用實例,訪問地址為 http://%s:%s", host, port) });
當我們啟動了服務器之后,在頁面上輸入http://localhost:9090/Query,就可以得到我們需要的數據。
{"total":3,"result":[{"articleId":6,"articleName":"2015總結","date":"2016-1-14","categoryId":9},{"articleId":8,"articleName":"數據庫","date":"2016-1-15","categoryId":6},{"articleId":9,"articleName":"linux基礎","date":"2016-1-15","categoryId":6}]}
上面是沒有參數的查詢,也就是不需要傳遞參數,當然,我封裝的Mysql是可以傳遞參數的,下面是整個從頁面傳遞參數到取出數據的過程。
例如例子中,我需要根據Id查詢出articleId=6時articleName時,需要從前端取到Id值,然后根據$.getJSON("/Query",{articleId:6},function(data){console.log(data)});發送ajax請求。
var express = require("express"); var app = express(); var Mysql = require("./Mysql/Mysql2"); app.get("/Query",function(request,response){ var query = "select * from Article where articleId=?"; var param = request.query; var mysql = new Mysql.createMysql({ database:"blog", response:response, query:query, param:[param.articleId], //配置參數 config:["articleId","articleName","date","categoryId"] }); mysql.Query(); }); var server = app.listen(9090,function(){ var host = server.address().address; var port = server.address().port; console.log("應用實例,訪問地址為 http://%s:%s", host, port) });
就這樣可以取到數據。
{"total":1,"result":[{"articleId":6,"articleName":"2015總結","date":"2016-1-14","categoryId":9}]}
總結
在學習技術的過程中,越發覺得代碼就是要為我們帶來方便,我們不想寫重復的代碼,那就把它封裝起來吧,有很多人在問要不要重復造輪子的問題,我覺得這個問題因人而異,我個人非常喜歡造輪子,如果是簡單的東西,都自己封裝,如果是要用大的框架,就去學習別人的框架,看看別人的源碼,我曾經承諾過不許別人說我Jquery基礎差,以后一定會去研究它的源碼,不過目前優先級不高,當我水平達到一個層次后,自然會想突破自己,就會去看別人的框架源碼提升框架水平,現在還是打好基礎,認真走好每一步,這樣才能茁壯成長。