mm_mysql 1.8.9 → 1.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (5) hide show
  1. package/README.md +234 -2
  2. package/data.sql +4963 -0
  3. package/index.js +53 -0
  4. package/package.json +1 -1
  5. package/test.js +154 -132
package/README.md CHANGED
@@ -1,2 +1,234 @@
1
- # mm_mysql
2
- 这是超级美眉mysql帮助函数模块,用于便捷操作mysql,使用await方式,可以避免嵌套函数
1
+ # mm_mysql
2
+ 这是超级美眉mysql帮助函数模块,用于便捷操作mysql,使用await方式,可以避免嵌套函数
3
+
4
+ ## 安装
5
+
6
+ ```bash
7
+ npm install mm_mysql
8
+ ```
9
+
10
+ ## 基本使用
11
+
12
+ ```javascript
13
+ const { mysql_admin } = require('mm_mysql');
14
+
15
+ // 创建mysql实例
16
+ const mysql = mysql_admin();
17
+
18
+ // 配置数据库连接
19
+ mysql.setConfig({
20
+ host: "127.0.0.1",
21
+ port: 3306,
22
+ user: "root",
23
+ password: "your_password",
24
+ database: "your_database",
25
+ multipleStatements: false,
26
+ log: false
27
+ });
28
+
29
+ // 打开数据库连接
30
+ mysql.open();
31
+
32
+ // 获取数据库管理器
33
+ const db = mysql.db();
34
+
35
+ // 使用完后关闭连接
36
+ mysql.close();
37
+ ```
38
+
39
+ ## API文档
40
+
41
+ ### Mysql类
42
+
43
+ #### 构造函数
44
+
45
+ ```javascript
46
+ new Mysql(scope, dir)
47
+ ```
48
+
49
+ 参数说明:
50
+ - `scope` {String} 作用域
51
+ - `dir` {String} 当前路径
52
+
53
+ #### 配置参数
54
+
55
+ ```javascript
56
+ mysql.config = {
57
+ host: "127.0.0.1", // 服务器地址
58
+ port: 3306, // 端口号
59
+ user: "root", // 连接用户名
60
+ password: "password", // 连接密码
61
+ database: "dbname", // 数据库名
62
+ multipleStatements: false, // 是否支持多个sql语句同时操作
63
+ log: false, // 是否打印SQL语句
64
+ log_ignore: [1062] // 需要排除打印的错误码
65
+ };
66
+ ```
67
+
68
+ #### 主要方法
69
+
70
+ ##### setConfig(config)
71
+ 设置数据库配置参数
72
+ - `config` {Object|String} 配置对象或配置文件路径
73
+
74
+ ##### open(reset)
75
+ 打开数据库连接
76
+ - `reset` {Boolean} 是否重置连接
77
+
78
+ ##### close()
79
+ 关闭数据库连接
80
+
81
+ ##### run(sql, val)
82
+ 执行查询SQL语句
83
+ - `sql` {String} SQL语句
84
+ - `val` {Array} 替换值
85
+ - 返回:{Promise|Array} 查询结果数组
86
+
87
+ ##### exec(sql, val)
88
+ 执行增删改SQL语句
89
+ - `sql` {String} SQL语句
90
+ - `val` {Array} 替换值
91
+ - 返回:{Promise|Number} 影响的行数
92
+
93
+ ##### db()
94
+ 获取数据库管理器
95
+ - 返回:{DB} 数据库管理器实例
96
+
97
+ ##### dbs(key, value, clear_prefix, ...arr_table)
98
+ 获取关联数据库管理器
99
+ - `key` {String} 主键
100
+ - `value` {String|Number} 对象值
101
+ - `clear_prefix` {Boolean} 是否清除前缀
102
+ - `arr_table` {Array} 关联的数据表
103
+ - 返回:{Object} 管理模型
104
+
105
+ ### 使用示例
106
+
107
+ #### 基本查询操作
108
+
109
+ ```javascript
110
+ const { mysql_admin } = require('mm_mysql');
111
+
112
+ async function main() {
113
+ const mysql = mysql_admin();
114
+ mysql.setConfig({
115
+ host: "localhost",
116
+ user: "root",
117
+ password: "123456",
118
+ database: "test"
119
+ });
120
+
121
+ mysql.open();
122
+ const db = mysql.db();
123
+
124
+ // 设置操作的表名
125
+ db.table = "users";
126
+
127
+ // 查询数据
128
+ const users = await db.get({id: 1});
129
+ console.log(users);
130
+
131
+ // 添加数据
132
+ const result = await db.add({
133
+ name: "张三",
134
+ age: 25
135
+ });
136
+
137
+ // 修改数据
138
+ await db.set({id: 1}, {name: "李四"});
139
+
140
+ // 删除数据
141
+ await db.del({id: 1});
142
+
143
+ mysql.close();
144
+ }
145
+
146
+ main().catch(console.error);
147
+ ```
148
+
149
+ #### 事务操作
150
+
151
+ ```javascript
152
+ const { mysql_admin } = require('mm_mysql');
153
+
154
+ async function transaction() {
155
+ const mysql = mysql_admin();
156
+ mysql.setConfig({
157
+ host: "localhost",
158
+ user: "root",
159
+ password: "123456",
160
+ database: "test"
161
+ });
162
+
163
+ mysql.open();
164
+ const db = mysql.db();
165
+
166
+ try {
167
+ // 开始事务
168
+ await db.start();
169
+
170
+ // 执行多个操作
171
+ await db.exec("INSERT INTO users (name) VALUES ('张三')");
172
+ await db.exec("UPDATE accounts SET balance = balance - 100 WHERE user_id = 1");
173
+
174
+ // 提交事务
175
+ await db.commit();
176
+ } catch (err) {
177
+ // 发生错误时回滚
178
+ await db.back();
179
+ console.error(err);
180
+ } finally {
181
+ // 结束事务
182
+ await db.end();
183
+ mysql.close();
184
+ }
185
+ }
186
+
187
+ transaction().catch(console.error);
188
+ ```
189
+
190
+ #### 关联查询
191
+
192
+ ```javascript
193
+ const { mysql_admin } = require('mm_mysql');
194
+
195
+ async function linkQuery() {
196
+ const mysql = mysql_admin();
197
+ mysql.setConfig({
198
+ host: "localhost",
199
+ user: "root",
200
+ password: "123456",
201
+ database: "test"
202
+ });
203
+
204
+ mysql.open();
205
+
206
+ // 创建关联查询管理器
207
+ const model = await mysql.dbs("user_id", 1, true, "users", "orders", "order_items");
208
+
209
+ // 获取用户及其订单信息
210
+ const result = await model.get();
211
+ console.log(result);
212
+
213
+ mysql.close();
214
+ }
215
+
216
+ linkQuery().catch(console.error);
217
+ ```
218
+
219
+ ## 注意事项
220
+
221
+ 1. 使用前请确保已正确配置数据库连接信息
222
+ 2. 建议使用try-catch处理可能出现的错误
223
+ 3. 在程序结束时调用close()关闭数据库连接
224
+ 4. 使用事务时,记得正确处理commit、back和end
225
+ 5. 查询条件支持多种格式:
226
+ - `_min`: 大于等于
227
+ - `_max`: 小于等于
228
+ - `_not`: 不等于
229
+ - `_has`: IN查询
230
+ - `_like`: LIKE查询
231
+
232
+ ## 许可证
233
+
234
+ ISC License