eagle-breeze
v1.2.0
Published
like mongo
Readme
Eagle Breeze
SQL语句生成库,可以像Mongoose一样使用结构化参数生成SQL参数化查询语句
Features
- 支持SELECT/INSERT/UPDATE/DELETE语句生成
- 参数化查询防止SQL注入
- where条件支持
- '$gt': '>';
- '$lt': '<';
- '$gte': '>=';
- '$lte': '<=';
- '$neq': '<>';
- '$regex': 'REGEXP';
- '$like': 'LIKE';
注意::
- 目前暂不支持复杂嵌套条件的查询语句生成
- 目前暂不支持JOIN查询语句生成
- 目前暂不支持聚合函数语句生成
- 目前暂不支持别名语句生成
- 目前暂不支持子字段查询语句生成
const filter = {
$or: [
{ status: 'active', rating: { $gte: 4 } },
{ featured: true }
]
};Usage
selectSql 查询语句
// 基础用法
selectSql(table: string, filter: any, options?: QueryOptions): { sql: string, params: any[] };
// 带数据库名称
selectSql(dbname: string, table: string, filter: any, options?: QueryOptions): { sql: string, params: any[] };
// 示例
const { sql, params } = Sql.selectSql('users', { age: { $gt: 18 } }, {
select: ['name', 'age'],
sort: { age: 1 },
limit: 10
});
/* 生成结果:
SQL: SELECT `name`, `age` FROM `users` WHERE `age` > ? ORDER BY `age` ASC LIMIT 10
Params: [18]
*/insertSql 插入语句
insertSql(table: string, data: any): { sql: string, params: any[] };
insertSql(dbname: string, table: string, data: any): { sql: string, params: any[] };
// 示例
const { sql, params } = Sql.insertSql('products', {
name: 'Laptop',
price: 2999
});
/* 生成结果:
SQL: INSERT INTO `products` (`name`, `price`) VALUES (?, ?)
Params: ['Laptop', 2999]
*/bulkInsertSql 批量插入语句
bulkInsertSql(table: string, data: any[]): { sql: string, params: any[] };
// 示例
const { sql, params } = Sql.bulkInsertSql('employees', [
{ name: 'Alice', role: 'dev' },
{ name: 'Bob', role: 'test' }
]);
// SQL: INSERT INTO `employees` (`name`, `role`) VALUES (?, ?), (?, ?)
// Params: ['Alice', 'dev', 'Bob', 'test']updateSql 更新语句
updateSql(table: string, filter: any, update: any): { sql: string, params: any[] };
// 示例
const { sql, params } = Sql.updateSql('orders',
{ status: 'pending' },
{ total: 999, status: 'completed' }
);
// SQL: UPDATE `orders` SET `total` = ?, `status` = ? WHERE `status` = ?
// Params: [999, 'completed', 'pending']deleteSql 删除语句
deleteSql(table: string, filter: any): { sql: string, params: any[] };
// 示例
const { sql, params } = Sql.deleteSql('logs', {
createdAt: { $lt: '2023-01-01' }
});
// SQL: DELETE FROM `logs` WHERE `createdAt` < ?
// Params: ['2023-01-01']