sqlHelper
1.查询放入结果集
QSqlQuery query;
if (!query.exec(sql)) {
qCritical("??sql????!");
return;
}
while (query.next()) {
QMap<QString, QVariant> map;
for (index = 0; index < columnList.count(); index++) {
map.insert(columnList[index], query.value(index));
}
resVec.push_back(map);
}
2.针对其他语句
int32_t SqlHelper::ExecuteCommand(const QString& sql, QVariant& lastInsertId) const
{
if (state == false) {
return 0;
}
QSqlQuery query;
if (!query.exec(sql)) {
QSqlError e = query.lastError();
qCritical("??sql????!");
return 0;
}
lastInsertId = query.lastInsertId();
return query.numRowsAffected();
}
3.查询总条数
QSqlQuery query;
if (!query.exec("select count(*) from table")) {
qCritical("??sql????!");
return;
}
query.next();
int count = query.value(0).toInt();
count 即为总条数
4.分页:
return (sumTableNum%5 == 0)?(sumTableNum/5):(sumTableNum/5+1);
或者使用qceil向上取整
5.关于分页时数据库数据发生变化的解决办法:
我这里使用的是自增长ID,因此我通过ID可以实现,也可以设计字段插入时间,通过插入时间排序后,比较时间段来筛选数据也可以
Mysql在分页过程中有新的数据插入造成重复数据:
https://blog.youkuaiyun.com/qq_33517844/article/details/96866301?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-0-96866301-blog-60583832.pc_relevant_3mothn_strategy_recovery&spm=1001.2101.3001.4242.1&utm_relevant_index=3
数据库分页,翻页时会重新查询数据库,导致新数据参入,排序混乱问题解决方法:
在hibernate中分页查询有固定的方法,传入参数就可直接进行查询.但是如果你的数据库中数据一直在变化,那么当你翻页的时候下一页的内容不是你想象的那样,因为会有新的数据进入到数据库中,旧的数据与新数据综合在一起重新排序的分页.这样的数据就会很乱如何解决这个问题呢?
我们给每一条数据新增一个字段timestemp,记录数据被创建的时间,在经行查询的时候设置数据的创建时间位当前系统时间之前,那么这次查询的语句中就不会再查到数据库中新增的数据,只会在原有的数据上经行分页.这种方式实现最简单对数据库和java代码改动非常小.
https://blog.youkuaiyun.com/mrgaoang/article/details/60583832
2.上层为daomanager,主要设计增删改查。