#include "FaceDataDao.h" FaceDataDao::FaceDataDao(QObject *parent) : BaseDao(parent) { } QVector<QVariantMap> FaceDataDao::findAllRecord() { // 新建查询 QSqlQuery query(ConnectionManager::getInstance()->getConnection()); // 查询语句 QString sql = "SELECT * FROM FACE_DATA"; // 执行查询 query.exec(sql); // 返回结果 QVector<QVariantMap> result; // 遍历查询结果 while (query.next()) { QVariantMap item; item.insert("id", query.value("id").toString()); item.insert("person_id", query.value("person_id").toString()); item.insert("face_code", query.value("face_code").toByteArray()); result.append(item); } // LOG(DEBUG) << QString("查询FACE_DATA表的所有记录[%1]").arg(result.size()).toStdString(); LOG_DEBUG(QString("查询FACE_DATA表的所有记录[%1]").arg(result.size()).toStdString()); return result; } QVariantMap FaceDataDao::findRecordById(QString id) { // 新建查询 QSqlQuery query(ConnectionManager::getInstance()->getConnection()); // 查询语句 QString sql = QString("SELECT * FROM FACE_DATA WHERE ID = '%1'").arg(id); // 执行查询 query.exec(sql); // 返回结果 QVariantMap result; // 获取结果 if (query.next()) { result.insert("id", query.value("id").toString()); result.insert("person_id", query.value("person_id").toString()); result.insert("face_code", query.value("face_code").toString()); } // LOG(DEBUG) << QString("根据id查询FACE_DATA表的记录[%1][%2]").arg(result.size()).arg(sql).toStdString(); LOG_DEBUG(QString("根据id查询FACE_DATA表的记录[%1][%2]").arg(result.size()).arg(sql).toStdString()); return result; } QVariantMap FaceDataDao::findRecordByPersonId(QString personId) { // 新建查询 QSqlQuery query(ConnectionManager::getInstance()->getConnection()); // 查询语句 QString sql = QString("SELECT * FROM FACE_DATA WHERE PERSON_ID = '%1'").arg(personId); // 执行查询 query.exec(sql); // 返回结果 QVariantMap result; if (query.next()) { result.insert("id", query.value("id").toString()); result.insert("person_id", query.value("person_id").toString()); result.insert("face_code", query.value("face_code").toString()); } // LOG(TRACE) << QString("根据id查询FACE_DATA表的记录[personId=%1][%2]").arg(personId).arg(sql).toStdString(); LOG_TRACE(QString("根据id查询FACE_DATA表的记录[personId=%1][%2]").arg(personId).arg(sql).toStdString()); return result; } QVector<QVariantMap> FaceDataDao::findRecordsByProperty(QString properName, QVariant properValue) { // 新建查询 QSqlQuery query(ConnectionManager::getInstance()->getConnection()); // 查询语句 QString sql = "SELECT * FROM FACE_DATA WHERE %1 = '%2'"; sql = sql.arg(properName).arg(properValue.toString()); // 执行查询 query.exec(sql); // 获取结果集的大小 int count = 0; // 返回结果 QVector<QVariantMap> result; // 遍历查询结果 while (query.next()) { QVariantMap item; count++; item.insert("id", query.value("id").toString()); item.insert("person_id", query.value("person_id").toString()); item.insert("face_code", query.value("face_code").toString()); result.append(item); } // LOG(DEBUG) << QString("根据属性值查询FACE_DATA表的记录[%1][%2]").arg(count).arg(sql).toStdString(); LOG_DEBUG(QString("根据属性值查询FACE_DATA表的记录[%1][%2]").arg(count).arg(sql).toStdString()); return result; } QString FaceDataDao::save(QVariantMap object) { // 新建查询 QSqlQuery query(ConnectionManager::getInstance()->getConnection()); qulonglong id = ConnectionManager::getInstance()->generateId(); // INSERT语句 QString sql = QString("INSERT INTO FACE_DATA " "(ID, PERSON_ID, IMAGE_ID, FACE_CODE) " "VALUES ('%1', '%2', '%3', :face)") .arg(id).arg(object.value("person_id").toString()) .arg(object.value("image_id").toString()); query.prepare(sql); query.bindValue(":face", object.value("face_code")); // 开启事务 ConnectionManager::getInstance()->getConnection().transaction(); // 执行插入 bool success = query.exec(); // LOG(DEBUG) << QString("保存人脸特征值[%1][%2]").arg(success).arg(sql).toStdString(); LOG_DEBUG(QString("保存人脸特征值[%1][%2]").arg(success).arg(sql).toStdString()); // 结束事务 ConnectionManager::getInstance()->getConnection().commit(); // 返回结果 if (success == true) { return QString("%1").arg(id); } else { return "-1"; } } bool FaceDataDao::edit(QVariantMap newObject, QString id) { // 新建查询 QSqlQuery query(ConnectionManager::getInstance()->getConnection()); // UPDATE语句 if (!newObject.contains("face_code")){ return false; } QString sql = QString("UPDATE FACE_DATA SET FACE_CODE = :faceCode WHERE ID = '%1'").arg(id); query.prepare(sql); query.bindValue(":faceCode", newObject.value("face_code")); // 开启事务 ConnectionManager::getInstance()->getConnection().transaction(); // 执行更新 bool success = query.exec(); // LOG(DEBUG) << QString("编辑人脸特征值[%1][%2]").arg(success).arg(sql).toStdString(); LOG_DEBUG(QString("编辑人脸特征值[%1][%2]").arg(success).arg(sql).toStdString()); // 结束事务 ConnectionManager::getInstance()->getConnection().commit(); // 返回结果 return success; } bool FaceDataDao::dele(QString id) { // 新建查询 QSqlQuery query(ConnectionManager::getInstance()->getConnection()); // DELETE QString sql = QString("DELETE FROM FACE_DATA WHERE ID = '%1'").arg(id); // 开启事务 ConnectionManager::getInstance()->getConnection().transaction(); // 执行更新 bool success = query.exec(sql); // LOG(DEBUG) << QString("删除人脸特征值[%1][%2]").arg(success).arg(sql).toStdString(); LOG_DEBUG(QString("删除人脸特征值[%1][%2]").arg(success).arg(sql).toStdString()); // 结束事务 ConnectionManager::getInstance()->getConnection().commit(); // 返回结果 return success; }