文章阅读
通过原生SQL语句返回多条记录(带分页)
文章类别: JDiy框架教程  更新日期: 2013-03-07 21:12:16.0  点击次数:4774
  在大多数情况下,可以像上一篇文章所述的那样,借助Args参数对象来从数据库中查询出多条记录。但某些个别情况(例如查询语句过于复杂,您不知道怎么设置Args),您仍然可以使用原生SQL语句来进行查询,对应的Dao方法为:
Ls Dao.ls(String sql, int pageSize, int absPage)
  此方法接受三个参数,分别为:原生的SQL查询语句, 每页显示的记录条数,当前显示的页码
对于不需要分页的多条记录查询,可以像这样:
Ls list= dao.ls("SELECT * FROM user_info WHERE type_id=1", 0, 1);
//即pageSize=0时将不分页(查询返回全部的记录)
  对于需要分页的查询(例如每页显示5条记录),可以像这样:
Ls list= dao.ls("SELECT * FROM user_info WHERE type_id=1", 5, 1);
  从上面的例子可以看到,此方法仍旧返回的为Ls记录集对象,通过该对象可以获得查询到的记录集合:
Rs[] rsArray = list.getItems();
  如果存在分页,您可以方便地从Ls对象中获取分页信息,如:
总记录数: list.getRowCount();总页数: list.getPageCount();当前页: list.getAbsPage()
最后,我们来看一下完整的jsp页面代码:
代码示例:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="org.jdiy.core.*" %>
<html>
<head><title>JDiy demo</title></head>
<body>
<%
//Web环境下用App类来获取JDiy上下文
   App app = App.get();
//下面获取默认的数据库操作DAO
   Dao dao = app.getDao();

//下面获取post/get过来的查询参数(即取得当前页),如果取不到正确的页码信息,则默认为第1页
int currentPage = app.getInt("page",1);
//下面通过原生SQL语句创建查询
   Ls ls =
dao.ls("SELECT * FROM user_info WHERE type_id=1", 5, currentPage);
//下面,我们在页面上循环输出内容:
   for(Rs rs:ls.getItems()){
//为便于演示说明,这儿仅仅只输出了user_info的name字段。
         out.print( rs.get("name") + "<br />" );
   }

  //下面输出分页信息:
%>
   总共<%=ls.getPageCount()%>页 / <%=ls.getRowCount()%>条记录
   当前第<%=ls.getAbsPage()%>页
   <a href="?page=1">首页</a>
   转到:
   <%
   for(int i=1;i<=ls.getPageCount();i++){
          out.println("<a href=\"?page=" + i + "\">第" + i + "页</a>");
   }
   %>
   <a href="?page=<%=ls.getPageCount()%>">尾页</a>
</body>
</html>
  有关更多Ls对象方法的信息,请参见JDiy API开发文档。
[ 上一篇 利用JDiy建立快速高效的分页查询   下一篇 利用JDiy删除数据库中的记录 ]
鄂ICP备18006629号-1       鄂公网安备 42050302000160号


技术支持QQ:39886616 QQ群:7759217
联系JDiy作者: ziquee java/javascript WEB编程
E-mail:ziquee@abcbcd.com http://189.cn
*尊姓大名:

*电子邮箱:

*QQ号码:

*留言内容:
提交留言
取消
loading...
注:带"*"的为必填项。请如实填写您的E-mail或QQ号码以便我们能与您取得联系。