首先学会使用mustache
语法
select * from {{key1}}
字符中{{key1}}会进行匹配map中的key
例如:
let sql = select * from {{key1}};
let tableMapper = {
"key1": "course",
}
let result = mustache.render(sql, tableMapper);
console.log('result:', result);
此段代码中select * from {{key1}}
会被替换为select * from course
对MysqL的dao层的封装dbMysqL.ts
let MysqL = require('MysqL2');
let mustache = require('mustache');
module.exports = class dbMysqL {
private MysqLConnectPool: any;
private tableMapper = {
"key1": "course",
}
init(dbConfig: any): void {
try {
this.MysqLConnectPool = MysqL.createPool(dbConfig);
console.debug('MysqL Adapter Pool generated successfully');
} catch (error) {
console.error('[MysqL.connector][init][Error]: ', error);
throw new Error('Failed to initialized pool');
}
}
executeQuery(sql: any, params: any): any {
return new Promise((resolve, reject) => {
this.MysqLConnectPool.getConnection(function (err: any, conn: any) {
if (err) {
reject(err);
} else {
conn.release();
conn.execute(sql, params, function (err: any, rows: any) {
if (err) {
reject(err);
} else {
resolve(rows);
}
});
}
});
});
}
// 查找this.tableMapper键匹配表名
renderQuery(sql: any, params?: any): any {
sql = mustache.render(sql, this.tableMapper);
return this.executeQuery(sql, params);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。