mm_mysql 2.0.2 → 2.0.4

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.
package/README.md CHANGED
@@ -1,234 +1,266 @@
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
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 } = require('mm_mysql');
14
+
15
+ // 创建mysql实例
16
+ const mysql = new Mysql({
17
+ host: "localhost",
18
+ port: 3306,
19
+ user: "root",
20
+ password: "your_password",
21
+ database: "your_database"
22
+ });
23
+
24
+ // 初始化并打开连接
25
+ await mysql.init();
26
+ await mysql.open();
27
+
28
+ // 获取数据库管理器
29
+ const db = mysql.db();
30
+
31
+ // 执行操作...
32
+
33
+ // 使用完后关闭连接
34
+ await mysql.close();
35
+ await mysql.destroy();
36
+ ```
37
+
38
+ ## API文档
39
+
40
+ ### Mysql类
41
+
42
+ #### 构造函数
43
+
44
+ ```javascript
45
+ new Mysql(config)
46
+ ```
47
+
48
+ 参数说明:
49
+ - `config` {Object} 数据库配置对象
50
+
51
+ #### 配置参数
52
+
53
+ ```javascript
54
+ const config = {
55
+ host: "127.0.0.1", // 服务器地址
56
+ port: 3306, // 端口号
57
+ user: "root", // 连接用户名
58
+ password: "password", // 连接密码
59
+ database: "dbname", // 数据库名
60
+ multipleStatements: false, // 是否支持多个sql语句同时操作
61
+ debug: false, // 是否打印调试日志
62
+ charset: "utf8mb4", // 字符集
63
+ timezone: "+08:00", // 时区
64
+ connectionLimit: 10 // 连接池大小
65
+ };
66
+ ```
67
+
68
+ #### 主要方法
69
+
70
+ ##### setConfig(config)
71
+ 设置数据库配置参数
72
+ - `config` {Object} 配置对象
73
+ - 返回:{Mysql} 实例本身
74
+
75
+ ##### init()
76
+ 初始化服务
77
+ - 返回:{Promise} 初始化结果
78
+
79
+ ##### open(reset)
80
+ 打开数据库连接
81
+ - `reset` {Boolean} 是否重置连接
82
+ - 返回:{Promise} 连接结果
83
+
84
+ ##### close()
85
+ 关闭数据库连接
86
+ - 返回:{Promise} 关闭结果
87
+
88
+ ##### destroy()
89
+ 销毁服务,释放资源
90
+ - 返回:{Promise} 销毁结果
91
+
92
+ ##### run(sql, params)
93
+ 执行查询SQL语句
94
+ - `sql` {String} SQL语句
95
+ - `params` {Array} 参数数组
96
+ - 返回:{Promise|Array} 查询结果数组
97
+
98
+ ##### exec(sql, params)
99
+ 执行非查询SQL语句(增删改)
100
+ - `sql` {String} SQL语句
101
+ - `params` {Array} 参数数组
102
+ - 返回:{Promise|Number} 影响的行数
103
+
104
+ ##### read(table, where, options)
105
+ 读取表数据
106
+ - `table` {String} 表名
107
+ - `where` {Object} 查询条件
108
+ - `options` {Object} 选项配置
109
+ - 返回:{Promise|Array} 查询结果
110
+
111
+ ##### save(file)
112
+ 保存数据库结构到SQL文件
113
+ - `file` {Object} 文件对象(需实现hasFile、readText等方法)
114
+ - 返回:{Promise} 保存结果
115
+
116
+ ##### load(file)
117
+ 从SQL文件加载数据库结构和数据
118
+ - `file` {Object} 文件对象(需实现hasFile、readText等方法)
119
+ - 返回:{Promise} 加载结果
120
+
121
+ ##### db()
122
+ 获取数据库管理器
123
+ - 返回:{DB} 数据库管理器实例
124
+
125
+ ### DB类方法
126
+
127
+ #### add(table, data)
128
+ 添加数据
129
+ - `table` {String} 表名
130
+ - `data` {Object} 数据对象
131
+ - 返回:{Promise|Number} 新增的ID或影响行数
132
+
133
+ #### set(table, where, data)
134
+ 修改数据
135
+ - `table` {String} 表名
136
+ - `where` {Object} 条件对象
137
+ - `data` {Object} 数据对象
138
+ - 返回:{Promise|Number} 影响行数
139
+
140
+ #### get(table, where, options)
141
+ 查询数据
142
+ - `table` {String} 表名
143
+ - `where` {Object} 条件对象
144
+ - `options` {Object} 选项(fields, order, group, limit等)
145
+ - 返回:{Promise|Array} 查询结果数组
146
+
147
+ #### del(table, where)
148
+ 删除数据
149
+ - `table` {String} 表名
150
+ - `where` {Object} 条件对象
151
+ - 返回:{Promise|Number} 影响行数
152
+
153
+ #### exec(sql, params)
154
+ 执行SQL语句
155
+ - `sql` {String} SQL语句
156
+ - `params` {Array} 参数数组
157
+ - 返回:{Promise|Object} 执行结果
158
+
159
+ #### run(sql, params)
160
+ 执行查询SQL语句
161
+ - `sql` {String} SQL语句
162
+ - `params` {Array} 参数数组
163
+ - 返回:{Promise|Array} 查询结果
164
+
165
+ ### 事务操作
166
+
167
+ #### beginTransaction()
168
+ 开始事务
169
+ - 返回:{Promise} 事务结果
170
+
171
+ #### transaction(sql, params)
172
+ 在事务中执行SQL
173
+ - `sql` {String|Array} SQL语句或语句数组
174
+ - `params` {Array} 参数数组
175
+ - 返回:{Promise} 执行结果
176
+
177
+ ### 使用示例
178
+
179
+ #### 基本查询操作
180
+
181
+ ```javascript
182
+ const { Mysql } = require('mm_mysql');
183
+
184
+ async function main() {
185
+ const db = new Mysql({
186
+ host: "localhost",
187
+ user: "root",
188
+ password: "123456",
189
+ database: "test",
190
+ debug: true
191
+ });
192
+
193
+ await db.init();
194
+ await db.open();
195
+
196
+ // 执行查询
197
+ const users = await db.run('SELECT * FROM users WHERE age > ?', [20]);
198
+ console.log(users);
199
+
200
+ // 添加数据
201
+ const insertId = await db.exec('INSERT INTO users (name, age) VALUES (?, ?)', ['张三', 25]);
202
+
203
+ // 使用db管理器
204
+ const dbManager = db.db();
205
+ dbManager.table = 'users';
206
+ const result = await dbManager.add({name: '李四', age: 26});
207
+
208
+ await db.close();
209
+ await db.destroy();
210
+ }
211
+
212
+ main().catch(console.error);
213
+ ```
214
+
215
+ #### 数据库结构导入导出
216
+
217
+ ```javascript
218
+ const { Mysql } = require('mm_mysql');
219
+
220
+ async function exportAndImport() {
221
+ const db = new Mysql({
222
+ host: "localhost",
223
+ user: "root",
224
+ password: "123456",
225
+ database: "test"
226
+ });
227
+
228
+ await db.init();
229
+ await db.open();
230
+
231
+ try {
232
+ // 创建文件对象(需实现相应接口)
233
+ const file = { /* 文件对象实现 */ };
234
+
235
+ // 导出数据库结构到文件
236
+ await db.save(file);
237
+ console.log('数据库结构已导出');
238
+
239
+ // 从文件导入数据库结构
240
+ await db.load(file);
241
+ console.log('数据库结构已导入');
242
+ } finally {
243
+ await db.close();
244
+ await db.destroy();
245
+ }
246
+ }
247
+
248
+ exportAndImport().catch(console.error);
249
+ ```
250
+
251
+ ## 注意事项
252
+
253
+ 1. 使用前请确保已正确配置数据库连接信息
254
+ 2. 建议使用try-catch处理可能出现的错误
255
+ 3. 在程序结束时调用close()和destroy()关闭数据库连接并释放资源
256
+ 4. 使用事务时,记得正确处理事务的提交和回滚
257
+ 5. 查询条件支持多种格式:
258
+ - `_min`: 大于等于
259
+ - `_max`: 小于等于
260
+ - `_not`: 不等于
261
+ - `_has`: IN查询
262
+ - `_like`: LIKE查询
263
+
264
+ ## 许可证
265
+
266
+ ISC License