# Node mysql框架 **Repository Path**: baigem/node-mysql-framework ## Basic Information - **Project Name**: Node mysql框架 - **Description**: 要让mysql操作越来越简单 - **Primary Language**: NodeJS - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 0 - **Created**: 2021-04-19 - **Last Updated**: 2024-01-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Node mysql框架 #### 介绍 要让mysql操作越来越简单 更新1.0版本 2021.4.20.12.40 #### 软件架构 普通查询 模型查询 全自动生成模型,需手动开启 必要条件,表必须要有一个主键,否则该表不会生成模型 #### 安装教程 reqire('./mysql')导入即可使用 #### 使用说明 1.使用前需配置好mysql.config.js 2.使用前需安装mysql2模块 3.整个链式最后最后调用toSql可以查看生成的sql语句 ### 方法说明 |方法名|说明|使用方法|参数说明| |:-|:-:|-:|-:| |table|选择需要查询的表名|table('cs','cs1','cs2')|1~n个参数,每个参数代表一个表名| |where|与选择器,与判断|where('id','>','1')|两个参数时默认是=判断,3参数时中间为判断符,也可以多数据判断,[1,2,3],获取id=1或id=2或id=3的数据| |orWhere|或选择器,或判断|orWhere('id','1')|与where相同| |get|获取经过判断后多条数据|get(['name'])|可以单参数字符串,选择查看的字段部分,亦可以数组多元素字段名,为空时查看所有字段信息| |first|获取经过判断后的第一条数据|first("name")|使用和get相同| |value|获取某个字段的内容|get('name')|只可以有一个字段名字符串参数,必填| |noGet|获取除了某些字段之外的所有字段内容,只有初始化模块后可以使用|noGet('name')|获取除了name之外的所有字段,也可以['name']添加过滤信息| |noFirst|和noGet相同,只不过这个只能获取一条信息的字段信息|noFirst('name')|使用和noGet相同| |onWhere|与选择器,与判断|onWhere('cs1.id','cs2.id')|使用和where相同,只不过这个方法参与预编译,适合对多表进行过滤使用| |update|修改字段信息|update({name:"白歌"})|对判断后的数据name字段内容修改为白歌| |delete|删除数据|delete()|无参数,可连表删除| |increment|自增方法|increment("num",1)|两个参数,只有一个参数时默认对该字段自增1,第二个参数也可以手动添加要增加的数量| |decrement|自减|decrement("num",1)|与increment方法相同| |orderBy|排序|orderBy('num',"asc")|第一个参数为字段名,第二个参数为升序,为空则降序| |limit|自定义获取的数据量|limit(5)|获取经过判断后剩下的前5条数据| |offset|跳过数据|offset(5)|跳过经过过滤后的前五条数据,此方法必须与limit搭配使用| |insert|为表中插入数据|insert({"name":"baige"})|一个对象参数时插入一条数据,key值为字段名,也可以一次插入多条数据,格式 [{},{},{},{},{}]| |insertId|插入数据后返回数据的主键,多条数据插入时返回最后一条数据主键|insertId({name:"baige"})|与insert相同| |toSql|获取生成的sql语句,但不可在get等方法后调用|toSql()|不需要任何参数| |join|内连接|join('cs2','cs2.id=cs1.id')|第一个参数为表名,第二个参数为表达式,也可以为空| |join_left|左连接|与join相同|与join相同| |join_right|右连接|与join相同|与join相同| |on|on查询,默认为与适合连表查询后使用,此方法参与预编译|on('ca1.id','ca2.id')|与onWhere相同| |onn|与on相同,但是不参与预编译,适合进行准确判断使用|onn("ca2.id",1)|与on相同| |oron|与on相同但是为或判断且不参与预编译|oron('cs1.id',1)|与onn相同| |many|在sql语句中插入sql语句|many(" id>1 ")|不推荐使用| ######查询语句 +普通查询 ```js await mysql.table('cs1').get(); //结果 /** [ TextRow { id: 4, name: 'd' }, TextRow { id: 6, name: 'asdasd' }, TextRow { id: 7, name: 'aaaaa' }, TextRow { id: 8, name: 'aaaaa' }, TextRow { id: 9, name: 'aaaaa' }, TextRow { id: 12, name: 'aaaaa' }, TextRow { id: 13, name: 'bbbbb' }, TextRow { id: 14, name: 'ccccc' } ] */ ``` +条件查询 ```js await mysql.table('cs1').where('id',4).orWhere('id',8).get(); await mysql.table('cs1').where('id','>',12).get(); //获取符合条件的第一条数据的某个字段 await mysql.table('cs1').where('id','<',10).first(['name']); //获取字段内容 await mysql.table('cs1').where('id',4).value('name'); //结果 1.[ TextRow { id: 4, name: 'd' }, TextRow { id: 8, name: 'aaaaa' } ] 2.[ TextRow { id: 13, name: 'bbbbb' }, TextRow { id: 14, name: 'ccccc' } ] 3.TextRow { name: 'd' } 4.d ``` +包裹查询 ```js await mysql.table('cs1') .where('id',4).where('name','d',{left:"("}) .orWhere('id',8,{right:")"}).get(); //结果 [ TextRow { id: 4, name: 'd' } ] ``` +连表查询 ```js await mysql.table('cs2','cs3').onWhere('cs2.id','cs3.id').get() //结果 [ TextRow { id: 2, price: 23 }, TextRow { id: 2, price: 23 }, TextRow { id: 3, price: 65 }, TextRow { id: 4, price: 12 }, TextRow { id: 2, price: 32 }, TextRow { id: 2, price: 32 } ] ``` +内连接 ```js await mysql.table('cs2').join('cs3','cs2.id=cs3.id').get() //与上面相同效果 await mysql.table('cs2').join('cs3').onWhere('cs2.id','cs3.id').get() await mysql.table('cs2').join('cs3','cs2.id=cs3.id').where('cs2.id',2).get() //与上面一句效果相同 await mysql.table('cs2').join('cs3','cs2.id=cs3.id').onn('cs2.id',2).get() await mysql.table('cs2').join('cs3','cs2.id=cs3.id').oron('cs2.id',2).get() 1.[ TextRow { id: 2, price: 23 }, TextRow { id: 2, price: 23 }, TextRow { id: 3, price: 65 }, TextRow { id: 4, price: 12 }, TextRow { id: 2, price: 32 }, TextRow { id: 2, price: 32 } ] 2.[ TextRow { id: 2, price: 23 }, TextRow { id: 2, price: 23 }, TextRow { id: 2, price: 32 }, TextRow { id: 2, price: 32 } ] 3.[ TextRow { id: 2, price: 23 }, TextRow { id: 2, price: 23 }, TextRow { id: 2, price: 32 }, TextRow { id: 2, price: 32 } ] ``` +外连接 ```js //左连接 await mysql.table('cs2').join_left('cs3','cs2.id=cs3.id').oron('cs2.id',2).get() //右连接 await mysql.table('cs2').join_right('cs3','cs2.id=cs3.id').oron('cs2.id',2).get() ``` ######修改语句 ``` //前面进行条件查询然后修改,update带对象,key值为数据库字段名,返回值为修改数据的数量 await mysql.table('cs2').where('id',4).update({price:21})); ``` ######插入语句,返回值为成功插入的数量 ``` //插入单条数据 await mysql.table('cs2').insert({id:10,price:100}); //插入多条数据 let data = [ {id:11,price:100}, {id:12,price:100}, {id:13,price:100}, ]; await mysql.table('cs2').insert(data); //插入数据后返回插入的数据主键id,如果插入多条数据则返回插入的最后一条数据的主键 await mysql.table('cs4').insertId({name:"测试"}) ``` ######删除语句 ``` //前面是判断条件,然后删除 ,返回值为删除的数量 await mysql.table('cs4').where("name","ccc").delete() ```