ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

一个typescript版本的dao(数据库访问)层的封装

2022-08-12 17:01:23  阅读:180  来源: 互联网

标签:typescript 封装 err key1 dao let sql tableMapper any


首先学会使用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);
    }
}

标签:typescript,封装,err,key1,dao,let,sql,tableMapper,any
来源: https://www.cnblogs.com/codebai/p/16580634.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有