oracle、mysql、db2三大数据库分页方法的整理

最近项目中经常会涉及到代码中支持三种数据库的分页的功能,自己整理了关于三种数据库的分页的写法,分享给大家,以供大家使用。希望能帮到更多的码友!

先来看一个代码片段:

1         String page = alarmCfgMessageForm.getPage();
2         String limit = alarmCfgMessageForm.getLimit();
3         long fromNum = 0;
4         long toNum = 0;
5         fromNum = ((Integer.parseInt(page) - 1) * Integer.parseInt(limit)) + 1;
6         toNum = Integer.parseInt(page) * Integer.parseInt(limit);    

上面代码片段使用的是oracle和mysql分页显示的计算。引用后,再看下面的代码片段:

 1   if (JudgeDB.IEAI_DB_TYPE == oracle)
 2    {
 3         sql = "SELECT * FROM  ( SELECT  rownum AS RN ,  A.* FROM ( " + sql + " )  A "
 4             + " ) WHERE RN BETWEEN  " + fromNum + "  AND  " + toNum;
 5    } else if (JudgeDB.IEAI_DB_TYPE == db2)
 6    {
 7         sql = "SELECT * FROM  ( SELECT  ROW_NUMBER() OVER() AS RN ,  A.* FROM ( " + sql
 8             + ")  A ) WHERE RN BETWEEN  " + fromNum + "  AND  " + toNum;
 9    } else if (JudgeDB.IEAI_DB_TYPE == mysql)
10    {
11         // 计算 mysql 分页最后一页显示条数不足时,取总数的余数为最后一页数量
12         long start = Long.parseLong(alarmCfgMessageForm.getPage());
13         long tolimit = Long.parseLong(alarmCfgMessageForm.getLimit());
14         long curpage = ((start - 1) * tolimit);
15         sql += " limit " + curpage + "," + tolimit;
16    }

上面代码段是分别写出了三个数据库各自的用法,而db2的语法与oracle的语法相似,因此,db2的判断也同样支持oracle的代码使用。

以上就是个人整理的三种数据库的写法,如果有什么不对的地方,欢迎指出。

原文地址:https://www.cnblogs.com/symbol8888/p/8471505.html