{"id":16434119,"url":"https://github.com/wangweianger/mysqls","last_synced_at":"2025-07-30T19:10:20.660Z","repository":{"id":55350683,"uuid":"115172524","full_name":"wangweianger/mysqls","owner":"wangweianger","description":"It is written in JavaScript,crud for mysql.You can also use transactions very easily.","archived":false,"fork":false,"pushed_at":"2021-01-06T03:10:28.000Z","size":574,"stargazers_count":107,"open_issues_count":16,"forks_count":23,"subscribers_count":10,"default_branch":"master","last_synced_at":"2024-10-22T15:50:07.124Z","etag":null,"topics":["javascript","mysql","nodejs"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wangweianger.png","metadata":{"files":{"readme":"README-CN.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-12-23T05:17:59.000Z","updated_at":"2024-03-28T01:58:59.000Z","dependencies_parsed_at":"2022-08-14T22:00:58.134Z","dependency_job_id":null,"html_url":"https://github.com/wangweianger/mysqls","commit_stats":null,"previous_names":["wangweianger/node-transform-mysql"],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wangweianger%2Fmysqls","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wangweianger%2Fmysqls/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wangweianger%2Fmysqls/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wangweianger%2Fmysqls/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wangweianger","download_url":"https://codeload.github.com/wangweianger/mysqls/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":221666418,"owners_count":16860415,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["javascript","mysql","nodejs"],"created_at":"2024-10-11T08:48:12.974Z","updated_at":"2024-10-27T11:01:34.851Z","avatar_url":"https://github.com/wangweianger.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"### [英文文档](/README.md) | [中文文档](/README-CN.md)\n\n# mysqls\nIt is written in JavaScript,crud for mysql.You can also use transactions very easily.\n\nmysqls 一款专为node.js生成sql语句的插件，链式调用，使用灵活。支持生成sql语法，也支持生成语法之后直接调用，支持事物等特性。\nAPI参考很流行的ThinkPHP模型API。\n\n* npm地址：https://www.npmjs.com/package/mysqls\n\n## 安装： \n```js \nnpm install mysqls --save-dev \n```\n\n## mysqls参数说明\n\u003e  * init:          sql初始化API\n\u003e  * exec:          执行sql语句\n\u003e  * sql:           链式调用生成sql语句，支持生成后直接执行sql语句\n\u003e  * transaction:   执行事务API\n\n## 项目使用：\n```js \n//import方式\nimport { init, exec, sql, transaction } from 'mysqls'\n\n//require方式\nlet { init, exec, sql, transaction } = require('mysqls')\n```\n\n## mysql配置初始化：\n```js\n// 可在项目的启动时初始化配置\ninit({\n    host: 'localhost',\n    user: 'root',\n    password:'123456',\n    database: 'test',\n    port: 3306,\n})\n```\n\n### init 参数说明\n\u003e * ispool:           是否以连接池的方式初始化 (default:true)\n\u003e * host:             host地址  (default:'127.0.0.1')\n\u003e * user:             用户名 (default:'root')\n\u003e * password:         数据库密码  (default:'root')\n\u003e * database:         使用的数据库  (default:'test')\n\u003e * port:             端口  (default:'3306')\n\u003e * waitConnection:   是否等待链接(连接池时使用)  (default:true)   \n\u003e * connectionLimit:  连接池大小   (default:10)   \n\u003e * queueLimit:       排队限制   (default:0)   \n\n### 只生成sql语句案例\n```js\nsql\n    .table('node_table')\n    .field('id,name')\n    .where({id:1})\n    .select()\n\n// result\nSELECT id,name FROM node_table WHERE id=1\n```\n\n### 使用exec函数执行sql语句\n```js\nconst sqlstr = sql\n    .table('node_table')\n    .field('id,name')\n    .where({id:1})\n    .select();\n\nconst result = await exec(sqlstr);\n```\n\n### 使用sql.prototype.exec链式调用\n```js\nconst result = sql\n    .table('node_table')\n    .field('id,name')\n    .where({id:1})\n    .select(true)\n    .exec();\n```\n* 链式调用执行sql时select方法需要传参数:true\n* 同样适合update(true),insert(true),delet(true),query(true)方法\n\n### 使用Promise方式\n```js\n//使用 exec 函数\nexec(sql.table('web_pages').where({id:147}).select())\n    .then(res=\u003e{\n        console.log(res)\n    }).catch(err=\u003e{\n        console.log(err)\n    })\n\n// 使用 exec 方法\nsql.table('web_pages').where({id:147}).select(true).exec()\n    .then(res=\u003e{\n        console.log(res)\n    }).catch(err=\u003e{\n        console.log(err)\n    })\n```\n\n### 使用async/await\n```js\n//使用 exec 函数\nconst result = await exec(sql.table('web_pages').where({id:147}).select())\n\n// 使用 exec 方法\nconst result = await sql.table('web_pages').where({id:147}).select(true).exec()\n```\n\n### 处理事务\n```js\nconst tranSqlArr = [\n    sql.table('table1').data({number:'number-5'}).update(true,true),\n    sql.table('table2').data({number:'number+5'}).update(true,true)\n]\nconst result = await transaction(tranSqlArr)\n```\n\n### 生成sql语句简单用法\n* 备注：sql调用方法的顺序内部已经做了排序，因此可以不按严格的sql语句顺序来写\n\n**查询**\n\n```js\nsql\n    .table('node_table')\n    .field('id,name')\n    .where({id:1})\n    .select()\n\nSELECT id,name FROM node_table WHERE id=1\n```\n\n**插入**\n\n```js\nsql\n    .table('node_table')\n    .data({name:'zane',email:'752636052@qq.com'})\n    .insert()\n\nINSERT INTO node_table (name,email) VALUES (`zane`,`752636052@qq.com`)\n```\n\n**批量插入**\n\n```js\nlet data = [\n    {name:'zane',email:'752636052@qq.com'},\n    {name:'zane_1',email:'752636052_1@qq.com'},\n    {name:'zane_2',email:'752636052_2@qq.com'},\n]\nsql\n    .table('node_table')\n    .data(data)\n    .insert()\n\nINSERT INTO node_table (name,email) VALUES ('zane','752636052@qq.com'),('zane_1','752636052_1@qq.com'),('zane_2','752636052_2@qq.com')\n```\n\n**更新**\n\n```js\nsql\n    .table('node_table')\n    .data({name:'zane',email:'752636052@qq.com'})\n    .where({id:1})\n    .update()\n\nUPDATE node_table SET name=`zane`,email=`752636052@qq.com`\n```\n\n**删除**\n \n```js\nsql .table('node_table')\n    .where({name:'zane'})\n    .delet();\n\nDELETE FROM node_table WHERE name=`zane`\n```\n\n### 生成sql语句高级用法\n\n```js\n//参数json多字段\nsql\n    .table('node_table')\n    .where({id:1,name:'zane'})\n    .select()\n\nSELECT  * FROM node_table WHERE id=1 AND name=`zane`\n\n//参数数组\nlet data=[\n    {id:1,name:'zhangsan',_type:'or'},\n    {sex:1,number:3}\n]\nsql.table('node_table').where(data).select()\n\nSELECT * FROM node_table WHERE (id=1 OR name=`zhangsan` ) AND (sex=1 AND number=3 )\n\n//多字段连接方式\nlet data=[\n    {id:1,name:'zhangsan',_type:'or',_nexttype:'or'},\n    {sex:1,number:3,_type:'and'}\n]\nsql.table('node_table').where(data).select()\n\nSELECT * FROM node_table WHERE (id=1 OR name=`zhangsan`) OR (sex=1 AND number=3)\n\n//表达式查询\nlet data={\n    id:{eq:100,egt:10,_type:'or'},\n    name:'zhangshan'\n}\nsql.table('node_table').where(data).select()\n\nSELECT  * FROM node_table WHERE ((id=100) OR (id\u003e=10)) AND name=`zhangshan`\n\n//混合查询\nlet data=[{\n    id:{eq:100,egt:10,_type:'or'},\n    name:'zhangshan',\n    _nexttype:'or'\n},{\n    status:1,\n    name:{like:'%zane%'}\n}]\nsql.table('node_table').where(data).select()\n\nSELECT * FROM node_table WHERE (((id=100) OR (id\u003e=10)) AND name=`zhangshan`) OR (status=1 AND ((name LIKE `%zane%`))) \n\n\n//UNION ， UNION ALL 组合使用\nsql\n    .union('SELECT * FROM think_user_1',true)\n    .union('SELECT * FROM think_user_2',true)\n    .union(['SELECT * FROM think_user_3','SELECT name FROM think_user_4'])\n    .union('SELECT * FROM think_user_5',true)\n    .select()\n\n得到\n(SELECT * FROM think_user_1) UNION ALL  \n(SELECT * FROM think_user_2) UNION ALL \n(SELECT * FROM think_user_3) UNION \n(SELECT name FROM think_user_4)  UNION  \n(SELECT * FROM think_user_5)\n\n```\n\n更多用法请查看详细文档\n\n## 文档目录\n\n* [**1.简介**](/README.md)\n  * [**1.1.参数说明与事务**](/docs/main/main.md)\n* [**2.链式操作**](/docs/chain/README.md)\n  * [**2.1.WHERE**](/docs/chain/where.md)\n  * [**2.2.TABLE**](/docs/chain/table.md)\n  * [**2.3.ALIAS**](/docs/chain/alias.md)\n  * [**2.4.DATA**](/docs/chain/data.md)\n  * [**2.5.FIELD**](/docs/chain/field.md)\n  * [**2.6.ORDER**](/docs/chain/order.md)\n  * [**2.7.LIMIT**](/docs/chain/limit.md)\n  * [**2.8.PAGE**](/docs/chain/page.md)\n  * [**2.9.GROUP**](/docs/chain/group.md)\n  * [**2.10.HAVING**](/docs/chain/having.md)\n  * [**2.11.UNION**](/docs/chain/union.md)\n  * [**2.12.DISTINCT**](/docs/chain/distinct.md)\n  * [**2.13.COMMENT**](/docs/chain/comment.md)\n* [**3.CURD调用**](/docs/curd/README.md)\n  * [**3.1.SELECT**](/docs/curd/select.md)\n  * [**3.2.UPDATE**](/docs/curd/update.md)\n  * [**3.3.INSERT**](/docs/curd/insert.md)\n  * [**3.4.DELETE**](/docs/curd/delete.md)\n* [**4.查询方式**](/docs/advanced/README.md)\n  * [**4.1.基本查询**](/docs/advanced/basesearch.md)\n  * [**4.2.表达式查询**](/docs/advanced/bdssearch.md)\n  * [**4.3.区间查询**](/docs/advanced/qjsearch.md)\n  * [**4.4.组合查询**](/docs/advanced/zhsearch.md)\n  * [**4.5.统计查询**](/docs/advanced/tjsearch.md)\n  * [**4.6.SQL查询**](/docs/advanced/sqlsearch.md)\n  * [**4.7.子查询**](/docs/advanced/childsearch.md)\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwangweianger%2Fmysqls","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwangweianger%2Fmysqls","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwangweianger%2Fmysqls/lists"}