【mysql】nodejs 下对 mysql 查询条件的一个封装
2017-09-05 09:40
441 查看
在node开发过程中,需要对数据库进行操作。不同的操作请求,要求写不同的请求语句。比较繁琐,还容易出错。在开发过程中,提炼出较为抽象的函数,数据接口,可以很方便地生成所需要的查询语句,减少错误,减少工作量。
设计查询条件:
生成函数:
第一个生成更新语句要求wants为对象形式。这个由前端传送回来,基本不用进行特别处理。
上面三个函数为基础函数,可以将其再进行一次合并。并对query增加 action 键值对:
设计查询条件:
let query = { want:"*",// "id,name,age" table:db.table, conditions:{ age:[18,65], sex:["male"] }, pages:{ limit:20, pages:3 } }
生成函数:
第一个生成更新语句要求wants为对象形式。这个由前端传送回来,基本不用进行特别处理。
// 用于生成数据库更新语句 var generateSql_update = function(search){ var sql = "update " + search.table +" ",sql_d = [],sql_temp = "",sql_where=""; for(var s in search.wants){ sql_temp += s +"=? , "; sql_d.push(search.wants[s]); } for(var s in search.conditions){ sql_where += " and " + s +"=? ,"; sql_d.push(search.conditions[s]); } sql += sql_temp? (" set "+sql_temp.substring(0,sql_temp.length-2)):""; sql += sql_where?( "where "+sql_where.substring(4,sql_where.length-1)):""; return {sql:sql,sqlData:sql_d} }
// 用于生成数据库查询语句 var generateSql_search = function(/*action,*/search){ var sql = "select " + search.wants +" from "+ search.table + " ",sql_d = [],sql_temp = ""; for(var condi in search.conditions){ if(search.conditions[condi].length == 1){ sql_temp += " and " + condi + " = ? " sql_d.push(search.conditions[condi][0]) }else if(search.conditions[condi].length == 2){ sql_temp += " and " + condi + " between ? and ? " sql_d.push(search.conditions[condi][0]); sql_d.push(search.conditions[condi][1]); } } sql += sql_temp? ("where"+sql_temp.substring(4,sql_temp.length-1)):""; search.pages?(sql+=" limit "+search.pages.limit+" offset "+search.pages.offset*search.pages.limit):null; return {sql:sql,sqlData:sql_d} }
// 用于生成数据库删除语句 var generateSql_delete = function(search){ var sql = "delete from " + search.table + " ",sql_d = [],sql_temp = ""; for(var condi in search.conditions){ if(search.conditions[condi].length == 1){ sql_temp += " and " + condi + " = ? " sql_d.push(search.conditions[condi][0]) }else if(search.conditions[condi].length == 2){ sql_temp += " and " + condi + " between ? and ? " sql_d.push(search.conditions[condi][0]); sql_d.push(search.conditions[condi][1]); } } sql += sql_temp ? ("where"+sql_temp.substring(4,sql_temp.length-1)):""; return {sql:sql, sqlData:sql_d} }
var generateSql_insert = function(search){ return {sql:"insert into " + search.table +" set ? ",sqlData:search.conditions} }
上面三个函数为基础函数,可以将其再进行一次合并。并对query增加 action 键值对:
< 4000 code class=" hljs erlang">let query = { want:"*", action:"del", table:db.table, conditions:{ //查询时值为数组形式,增加时值为普通类型 age:[18,65], sex:["male"] }, pages:{ limit:20, pages:3 } }
function generateSql(query){ let result = ""; switch (query){ case "del": result = generateSql_delete(query); break; case "add": result = generateSql_insert(query); break; case "upd": result = generateSql_update(query); break; case "sea": result = generateSql_search(query); break; default : result = {sql:"show databases",sqlData:[]} break; } return result; }
相关文章推荐
- 在Eclipse中测试MySQL-JDBC(5)查询1-4之间的所有员工,并且封装为一个个的employee对象,并且存储到一个集合中
- mysql 查询去除表中(多个条件确定的一个数据)
- MySQL IFNULL中可以有select语句;查询一个表中的数据,同时查看另一个表中是否有符合条件的额数据
- mysql查询:同一个字段满足多个条件的对应字段
- PHP中对mysql预编译查询语句的一个封装
- jfinal的一个ConditionInterceptor拦截器,封装查询条件,拦截器中动态拼...
- 思达报表工具Style Report基础教程—创建一个带条件的查询
- 一个数据库查询方法(可以动态设置查询参数,设置查询条件),很巧妙的组合sql语句
- MySQL、mybatis的查询条件-时间段
- php mysql 一个查询优化的简单例子
- 一个输入框作为两种条件查询
- MySQL种字符串拆分(substring_index)并作为关联查询条件后多列展示
- 给mysql添加一个只有某个数据库查询权限的用户
- 一个 MYSQL的存储过程 实现基于树型子结点的查询
- mysql把查询的结果集合并成一个字符串
- 一个简单实现多条件查询的例子
- 关于MYSQL查询时WHERE条件值为数字的问题
- 一个完整的Nodejs项目 完成连接数据库(MySQL),登陆、注册功能 session的使用 和发送邮件
- mysql 查询一个表中有的记录且在另一个表中无相关的记录sql
- c与mysql连接和一个简单查询的例子