派生自 development/c++

pans
2019-03-30 b3a8f07c53c479051e427830379779cb56e87736
QiaoJiaSystem/DataManagerServer/vss/dao/BaseDao.h
@@ -16,9 +16,9 @@
public:
    static QMutex m_mutexVisit;
private:
    static mysqlpp::Connection* conn;
    static mysqlpp::Connection *conn;
public:
    static mysqlpp::SimpleResult add(std::map<std::string, std::string>& columns, string tableName) {
    static mysqlpp::SimpleResult add(std::map<std::string, std::string> &columns, string tableName) {
        initConnection();
        mysqlpp::SimpleResult simpleResult;
        try {
@@ -32,17 +32,20 @@
        }
        return simpleResult;
    }
    static bool del(string tableName, std::map<std::string, std::string>& whereColumns) {
    static bool del(string tableName, std::map<std::string, std::string> &whereColumns) {
        initConnection();
        string sql = "DELETE FROM " + tableName + " where 1=1 " + getWhereColumnNameValuePair(whereColumns);
        mysqlpp::Query query = conn->query(sql);
        bool ret = query.exec();
        if (!ret) {
            cout << "error " <<query.error() << endl;
            cout << "error " << query.error() << endl;
        }
        return ret;
    }
    static bool update(std::map<std::string, std::string>& columns, string tableName, std::map<std::string, std::string>& whereColumns) {
    static bool update(std::map<std::string, std::string> &columns, string tableName,
                       std::map<std::string, std::string> &whereColumns) {
        string updateSql = getUpdateSql(columns, tableName, whereColumns);
        initConnection();
        mysqlpp::Query query = conn->query(updateSql);
@@ -62,7 +65,7 @@
                map<string, string> rowData;
                mysqlpp::Row row = *it;
                auto field_list = row.field_list();
                const mysqlpp::FieldNames* fieldNames = field_list.list;
                const mysqlpp::FieldNames *fieldNames = field_list.list;
                for (int i = 0; i < fieldNames->size(); i++) {
                    string columnValue;
                    row[i].to_string(columnValue);
@@ -77,15 +80,17 @@
        return rowDataList;
    }
    static Json::Value findJsonArray(string sql, std::map<std::string, std::string>& whereColumns) {
    static Json::Value findJsonArray(string sql, std::map<std::string, std::string> &whereColumns) {
        sql = sql + getWhereColumnNameValuePair(whereColumns);
        initConnection();
//        conn->query("SET character_set_server = utf8;");
        mysqlpp::Query query = conn->query(sql);
        std::cout << sql << std::endl;
        Json::Value rowList;
        if (auto res = query.store()) {
            for (auto it = res.begin(); it != res.end(); ++it) {
                Json::Value row;
                const mysqlpp::FieldNames* fieldNames = it->field_list().list;
                const mysqlpp::FieldNames *fieldNames = it->field_list().list;
                for (int i = 0; i < fieldNames->size(); i++) {
                    string columnValue;
                    (*it)[i].to_string(columnValue);
@@ -93,12 +98,15 @@
                        columnValue = "";
                    }
                    string columnName = fieldNames[0].at(i);
//                    if (columnName == "Nickname") {
//                        columnValue = columnValue;//.substr(0, 20);
//                    }
                    row[columnName] = columnValue;
                }
                rowList.append(row);
            }
        } else {
            cout << "error " <<query.error() << endl;
            cout << "error " << query.error() << endl;
            cout << "query failed" << endl;
        }
        return rowList;
@@ -109,12 +117,13 @@
        mysqlpp::Query query = conn->query(sql);
        bool ret = query.exec();
        if (!ret) {
            cout << "error " <<query.error() << endl;
            cout << "error " << query.error() << endl;
        }
        return ret;
    }
    static string getInsertSql(std::map<std::string, std::string>& columns, string tableName) {
        string insertSql = "INSERT INTO "+tableName+" ("
    static string getInsertSql(std::map<std::string, std::string> &columns, string tableName) {
        string insertSql = "INSERT INTO " + tableName + " ("
                           + getColumnNames(columns) +
                           " ) values ( "
                           + getColumnValues(columns) +
@@ -122,17 +131,20 @@
        cout << "insertSql " << insertSql << endl;
        return insertSql;
    }
    static string getUpdateSql(std::map<std::string, std::string>& columns, string tableName, std::map<std::string, std::string>& whereColumns) {
        string updateSql = "update "+tableName+" set "
    static string getUpdateSql(std::map<std::string, std::string> &columns, string tableName,
                               std::map<std::string, std::string> &whereColumns) {
        string updateSql = "update " + tableName + " set "
                           + getColumnNameValuePair(columns) +
                           " where 1=1 "+
                           getWhereColumnNameValuePair(whereColumns)
        ;
                           " where 1=1 " +
                           getWhereColumnNameValuePair(whereColumns);
        cout << "updateSql " << updateSql << endl;
        return updateSql;
    }
    static void doConnect() {
        cout << "db_host=" << appConfig.getStringProperty("db_host").c_str() << endl;
        conn->set_option(new mysqlpp::SetCharsetNameOption("utf8"));
        if (conn->connect(
            appConfig.getStringProperty("database").c_str(),
            appConfig.getStringProperty("db_host").c_str(),
@@ -148,22 +160,26 @@
//                3306
//        )) {
            cout << "connect success" << endl;
            mysqlpp::Query query = conn->query("SET NAMES UTF8-");
        } else {
            cout << "connect failed" << endl;
        }
    }
    static void initConnection() {
        static bool inited = false;
        if (!inited) {
            inited = true;
            conn = new mysqlpp::Connection(false);
            doConnect();
        }
        if (!conn->connected() || !conn->ping()) {
            doConnect();
        }
    }
    static string getColumnNames(std::map<std::string, std::string>& columns) {
    static string getColumnNames(std::map<std::string, std::string> &columns) {
        string columnNames;
        auto size = columns.size();
        int i = 0;
@@ -176,12 +192,13 @@
        }
        return columnNames;
    }
    static string getColumnValues(std::map<std::string, std::string>& columns) {
    static string getColumnValues(std::map<std::string, std::string> &columns) {
        string columnValues;
        auto size = columns.size();
        int i = 0;
        for (auto column : columns) {
            columnValues.append("'"+column.second+"'");
            columnValues.append("'" + column.second + "'");
            if (i != columns.size() - 1) {
                columnValues.append(",");
            }
@@ -189,14 +206,15 @@
        }
        return columnValues;
    }
    static string getColumnNameValuePair(std::map<std::string, std::string>& columns) {
    static string getColumnNameValuePair(std::map<std::string, std::string> &columns) {
        string columnNameValuePair;
        auto size = columns.size();
        int i = 0;
        for (auto column : columns) {
            columnNameValuePair.append(column.first);
            columnNameValuePair.append("=");
            columnNameValuePair.append("'"+column.second+"'");
            columnNameValuePair.append("'" + column.second + "'");
            if (i != size - 1) {
                columnNameValuePair.append(",");
@@ -205,7 +223,8 @@
        }
        return columnNameValuePair;
    }
    static string getWhereColumnNameValuePair(std::map<std::string, std::string>& columns) {
    static string getWhereColumnNameValuePair(std::map<std::string, std::string> &columns) {
        string columnNameValuePair;
        auto size = columns.size();
        int i = 0;
@@ -213,7 +232,7 @@
            columnNameValuePair.append(" and ");
            columnNameValuePair.append(column.first);
            columnNameValuePair.append("=");
            columnNameValuePair.append("'"+column.second+"' ");
            columnNameValuePair.append("'" + column.second + "' ");
            i++;
        }