一道看似简单的java面试题

Y569778402 2009-09-20 09:04:24
描述基于JSP,servlet,jdbc,oracle构架中,实现分页显示的思路
...全文
192 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
BearKin 2009-09-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bao110908 的回复:]
关键就是 Oracle 的分页语句,在 Oracle 中有两种分页 SQL 语句:

一、使用 ROWNUM 这个伪列进行分页,需要嵌套两个子查询:

SQL codeSELECT*FROM (SELECT t.*, rownumAS rnFROM (SELECT*FROM t_news mORDERBY m.id
) t
) xWHERE x.rn>=6AND x.rn<=10;


二、使用 row_number() 分析函数,需要嵌套一个子查询:

SQL codeSELECT*FROM (SELECT t.*, row_number()OVER(ORDERBY id)AS rnFROM t_news t
) xWHERE x.rn>=6AND x.rn<=10;

[/Quote]

LZ说明了用Oracle数据库 所以不用考虑什么兼容性 另外 如果说要写公共的话大可以使用ResultSet分页
shiyiwan 2009-09-21
  • 打赏
  • 举报
回复
sql写法不同

select top 10 * from ..
[Quote=引用 6 楼 y569778402 的回复:]
假如考官问如果用sql server 或者mysql又怎么实现呢
[/Quote]
snowmansh 2009-09-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bao110908 的回复:]
关键就是 Oracle 的分页语句,在 Oracle 中有两种分页 SQL 语句:

一、使用 ROWNUM 这个伪列进行分页,需要嵌套两个子查询:

SQL codeSELECT*FROM (SELECT t.*, rownumAS rnFROM (SELECT*FROM t_news mORDERBY m.id
) t
) xWHERE x.rn>=6AND x.rn<=10;


二、使用 row_number() 分析函数,需要嵌套一个子查询:

SQL codeSELECT*FROM (SELECT t.*, row_number()OVER(ORDERBY id)AS rnFROM t_news t
) xWHERE x.rn>=6AND x.rn<=10;

[/Quote]

即便分页查询,我觉得还是不解决问题。
撇开数据库不同因素,效率也极低。
如果查询流量大,DB会拖死。
觉得这个问题已经远远超过jdbc,db所能处理的。
soft53ears 2009-09-21
  • 打赏
  • 举报
回复
火龙果果然很强..膜拜中..明天把例子分页拿到公司去试试```
clarence0124 2009-09-21
  • 打赏
  • 举报
回复
那就请你先告诉我,这个架构实现要达到兼容性的效果
Y569778402 2009-09-20
  • 打赏
  • 举报
回复
假如考官问如果用sql server 或者mysql又怎么实现呢
Y569778402 2009-09-20
  • 打赏
  • 举报
回复
各位只答了如何分页而图略了整个问题
水中影子 2009-09-20
  • 打赏
  • 举报
回复
谢谢,学习了!Oracle不大熟悉
coolbamboo2008 2009-09-20
  • 打赏
  • 举报
回复
1楼很强,顶。
一般分页就是用数据库的分页语句直接查数据库,这样效率最高
whatisj2ee 2009-09-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bao110908 的回复:]
关键就是 Oracle 的分页语句,在 Oracle 中有两种分页 SQL 语句:

一、使用 ROWNUM 这个伪列进行分页,需要嵌套两个子查询:

SQL codeSELECT*FROM (SELECT t.*, rownumAS rnFROM (SELECT*FROM t_news mORDERBY m.id
) t
) xWHERE x.rn>=6AND x.rn<=10;


二、使用 row_number() 分析函数,需要嵌套一个子查询:

SQL codeSELECT*FROM (SELECT t.*, row_number()OVER(ORDERBY id)AS rnFROM t_news t
) xWHERE x.rn>=6AND x.rn<=10;

[/Quote]
  • 打赏
  • 举报
回复
关键就是 Oracle 的分页语句,在 Oracle 中有两种分页 SQL 语句:

一、使用 ROWNUM 这个伪列进行分页,需要嵌套两个子查询:

SELECT * FROM (
SELECT t.*, rownum AS rn FROM (
SELECT * FROM t_news m ORDER BY m.id
) t
) x
WHERE x.rn >= 6 AND x.rn <= 10;



二、使用 row_number() 分析函数,需要嵌套一个子查询:

SELECT * FROM (
SELECT t.*, row_number() OVER(ORDER BY id) AS rn FROM t_news t
) x
WHERE x.rn >= 6 AND x.rn <= 10;

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧