日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Node+Mysql增删改查obj-to-sql,多条件查询

發布時間:2023/12/16 数据库 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Node+Mysql增删改查obj-to-sql,多条件查询 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

平日開發使用node+mysq大多數是這樣寫法來查詢數據庫,如果多個篩選條件又需要寫許多and條件,于是寫了個obj-to-sql發布在npm上,引用下就可以輕松的將對象轉換為sql語句

下載

npm install obj-to-sql

結果對比

原來的方法:
ctx.request.body是koa框架的響應體,可自行更換

const requestBody = ctx.request.body const sql = `Select * From user Where name = '${requestBody.name}' And phone = '${requestBody.phone}'` connection.query(sql , (err, result) => {console.log('query', result) }

封裝后:
封裝之后我們使用對象傳輸,通過轉換方法獲取最終的sql語句,業務模塊不再關心sql語句是怎樣形成的,只需要關心自己的查詢條件與返回結果

const objToSql = require('obj-to-sql') const requestBody = ctx.request.body const sqlParmas = {table: 'user', //表名filters: [{ prop: 'name', type: 'equal', value: requestBody.name },{ prop: 'phone', type: 'equal', value: requestBody.phone }] } const sql = objToSql.select(sqlParmas) connection.query(sql, (err, result) => {console.log('query', result) }

使用方法

1.查詢數據
常用于列表查詢,具備多個篩選條件,若沒有傳值則不生成相關的語句內容,篩選條件的type對應表見代碼下方

const objToSql = require('obj-to-sql') const requestBody = {pageIndex: 1,pageSize: 20,name: 'tony',idCard: '350100',areaCode: '3501',birthdayBegin: '1990-01-01',birthdayEnd: '2000-01-01',notMark: true } const sqlParmas = {table: 'user', //表名sort: { prop: 'id',type: 'desc', //desc倒序、asc升序value: true //開啟排序},props: ['name', 'idCard', 'phone'], //響應體輸出的數據字段,如果為空則輸出全部字段page: {index: requestBody.pageIndex,size: requestBody.pageSize,value: true //開啟分頁},filters: [ { prop: 'name', type: 'equal', value: requestBody.name },{ prop: 'idCard', type: 'like', value: requestBody.idCard },{ prop: 'idCard', type: 'like-start', value: requestBody.areaCode },{ prop: 'birthday', type: 'greater-equal', value: requestBody.birthdayBegin },{ prop: 'birthday', type: 'less-equal', value: requestBody.birthdayEnd },{ prop: 'mark', type: 'null', value: requestBody.notMark }] } const sql = objToSql.select(sqlParmas)//SQL Result Select name, idCard, phone From user Where name = 'tony' And idCard Like '%350100%' And idCard Like '3501%' And birthday >= '1990-01-01' And birthday <= '2000-01-01' And (mark Is Null Or mark = '') Order By id Desc Limit 0, 20

篩選條件的type分別對應如下:
equal 相等
like 模糊匹配
like-start 開頭模糊匹配
like-end 結尾模糊匹配
greater 大于
greater-equal 大于且等于
less 小于
less-equal 小于且等于
null 判斷為空

2.查詢數據總數

const objToSql = require('obj-to-sql') const requestBody = {name: 'tony',idCard: '350100' } const sqlParmas = {table: 'user',filters: [ { prop: 'name', type: 'equal', value: requestBody.name },{ prop: 'idCard', type: 'like', value: requestBody.idCard }] } const sql = objToSql.total(sqlParmas)//SQL Result Select Count(*) As total From user Where name = 'tony' And idCard Like '%350100%'

3.添加數據
添加數據的時候也支持對是否為空判斷

const objToSql = require('obj-to-sql') const item = {name: 'tony',idCard: '350100000000000000',birthday: '1999-01-01',sex: 0,phone: '13600000000' } const sqlParmas = {table: 'user',props: ['name', 'idCard', 'birthday', 'sex', 'phone'], //數據表的列名filters: [{ prop: 'idCard', type: 'equal', value: item.idCard } //判斷是否有idCard相同的數據,如果為空則進行添加],value: item } const sql = objToSql.insert(sqlParmas)//SQL Result Insert Into user(name, idCard, birthday, sex, phone) Select 'tony', '350100000000000000', '1999-01-01', '0', '13600000000' From Dual Where Not Exists (Select * From user Where idCard = '350100000000000000')

4.更新數據
可以自定義要修改的數據字段

const objToSql = require('obj-to-sql') const item = {id: 1,birthday: '2008-01-01',sex: 1,phone: '15999999999' } const sqlParmas = {table: 'user',props: ['birthday', 'sex', 'phone'], //代表數據只修改這三個字段filters: [{ prop: 'id', type: 'equal', value: item.id } //通過id找到表里響應的數據],value: item } const sql = objToSql.update(sqlParmas)//SQL Result Update user Set birthday = '2008-01-01', sex = '1', phone = '15999999999' Where id = '1'

5.刪除數據
id=1的數據會被刪除

const objToSql = require('obj-to-sql') const sqlParmas = {table: 'user',filters: [{ prop: 'id', type: 'equal', value: 1 }] } const sql = objToSql.delete(sqlParmas)//SQL Result Delete From user Where id = '1'

總結

以上是生活随笔為你收集整理的Node+Mysql增删改查obj-to-sql,多条件查询的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。