node mysql封装
时间: 2025-01-08 07:16:48 浏览: 2
### Node.js 中 MySQL 操作的封装
对于希望简化并优化在 Node.js 应用程序中与 MySQL 数据库交互过程的开发者来说,创建一个良好的数据库操作层至关重要。这不仅有助于提高代码可读性和维护性,还能增强安全性以及性能表现。
#### 使用 `mysql` 或者更现代的 `mysql2` 模块作为基础
考虑到社区支持和技术演进情况,推荐选用 `mysql2` 替代原始版本较低效能特性的 `mysql` 来建立连接[^1]。安装命令如下:
```bash
npm install mysql2
```
#### 构建基本的数据库连接池类
为了提升效率减少每次请求都重新建立新链接带来的开销,采用连接池机制是一个不错的选择。下面展示了一个简单而实用的例子来说明这一点:
```javascript
const mysql = require('mysql2/promise');
class Database {
constructor(config) {
this.pool = mysql.createPool({
host: config.host,
user: config.user,
password: config.password,
database: config.database,
waitForConnections: true,
connectionLimit: 10,
queueLimit: 0
});
}
async executeQuery(sql, params=[]) {
try {
const [rows] = await this.pool.execute(sql, params);
return rows;
} catch (error) {
throw error;
}
}
close() {
this.pool.end();
}
}
```
此段代码定义了一个名为 `Database` 的类,它接受配置对象初始化,并提供了一种安全的方式去执行 SQL 命令。值得注意的是,在这里使用了 `async/await` 结构配合 promise-based API 实现更加直观易懂的操作流程[^3]。
#### 扩展 CRUD 方法
进一步扩展上述例子以包含常见的增删改查(CRUD) 功能是非常有帮助的。以下是几个可能的方法实现:
```javascript
// 插入记录
async insert(table, data) {
let columns = Object.keys(data).join(", ");
let placeholders = Object.values(data).map(() => "?").join(", ");
let sql = `INSERT INTO ${table} (${columns}) VALUES (${placeholders})`;
return await this.executeQuery(sql, Object.values(data));
}
// 更新特定条件下的多条记录
async update(table, updates, whereClause="") {
let setPart = Object.entries(updates).map(([key,value])=>`${key}= ?`).join(', ');
let conditions = whereClause ? " WHERE "+whereClause : "";
let sql = `UPDATE ${table} SET ${setPart}${conditions}`;
return await this.executeQuery(sql, [...Object.values(updates)]);
}
// 删除符合条件的一或多条记录
async deleteFromTable(table, whereClause="") {
let condition = whereClause ? "WHERE " + whereClause : '';
let sql = `DELETE FROM ${table} ${condition}`;
return await this.executeQuery(sql);
}
// 获取表内所有数据或按指定条件筛选后的结果集
async selectAllOrByCondition(table, fields='*', whereClause='') {
let fieldList = Array.isArray(fields)?fields.join(','):`${fields}`;
let condition = whereClause ? 'WHERE '+whereClause:'';
let sql = `SELECT ${fieldList} FROM ${table} ${condition}`;
return await this.executeQuery(sql);
}
```
以上方法允许应用程序轻松地对关联表格实施标准的数据操纵动作,同时也保持了灵活性以便应对复杂查询需求[^4]。
阅读全文