上一节我们学习了JAVA里面的ORM框架JOOQ 这节我们使用JOOQ实现以下数据分页
首先看一张表
image.png
image.png
接下来有这样的需求
首先我们根据表进行分页
QQ截图20180205145113.png
假设每页显示10条数据
接下来我们在查询分析器里写入sql语句
取出第一页前10条数据
image.png
select * from test_news ORDER BY id DESC LIMIT 0,10;
还可以这样写select * from test_news ORDER BY id DESC LIMIT 10;
取出第二页数据
image.png
两种方式都可以
取出第三页数据
image.png
以上分页在数据量小的时候可以这样做,如果数据量过大 这样做效率很低
所以需要对上面的sql语句做些优化
第一种方法
通过id加入子查询的方式来进行处理
我们以第二页为例
image.png
三种方式都为取出第二页数据
下面执行结果1,2,3都是相同的数据
取出第三页
image.png
那么sql语句在java代码中如何写呢
接下来我们可以来到JOOQ官网 搜索order by 或者 limit关键词
都有一些示例代码
接下来我们演示一下
由于我们创建了一张test_news新表
需要重新生成一下代码
image.png
执行这一句
image.png
将代码生成至此目录
image.png
由于sql里面需要用到一些函数,所以先看下这张图
image.png
接下来在MyDB里测试下代码
image.png
运行结果
image.png
接下来演示另外一种方法
实际上我们做前台页面一般不会这样写,因为性能还可以在高一些,可以把查询去掉
image.png
可以在第二页传入页码和lastId值 这样sql语句更加简便
例如
image.png
直接给个定值id小于定值 进行查询 更快速
这种方式需要程序和web页面的参数之间进行配合完成更进一步的优化
那在JOOQ里面还可以通过下面的方式实现上面的方法 只不过参数需要我们自己传
image.png
运行结果
image.png
我们还可以得到sql语句 并输出
image.png
运行结果
image.png
可以看出对基本运算进行了处理(大于 小于等)
网友评论