文章阅读
利用JDiy从数据库中查询返回单条记录
文章类别: JDiy框架教程  更新日期: 2013-03-09 23:26:01.0  点击次数:4958
  在前一篇文章中,我们了解到了JDiy的Args参数对象,它专门用作查询数据库的条件参数,传入到Dao对象的rs(Args args)或ls(Args)方法中,就可以返回查询结果了。本文再来回顾一下,如何从数据库中返回单条记录。
  例如我们从user_info这个数据表中,查询id=1的那条记录,我们可以使用像下面这样的代码:
Rs user = dao.rs(new Args("user_info", "id=1");
  对,就这么简单的一行语句,我们就可以取得id=1的这条user_info记录了!
  现在假设我们要获取的记录不存在,JDiy又会返回什么呢?例如我们设置一个“1=0”的永远不会成立的条件来进行查询测试一下:
Rs user = dao.rs(new Args("user_info", "1=0");
System.out.print(user);
  我们会得到类似这样的输出结果: @user_info
  可以看到,JDiy并没有返回null。这是JDiy的一个特性,即当我们通过dao.rs(Args args)方法查询不到任何记录时,JDiy会返回一个空的Rs对象(而不是返回null),这很重要,我们可以避免因程序编写不严谨而导致NullPointerException(即空指针异常)的错误;同时,也便于在更新记录时,不必先判断所查询出来的结果记录(Rs)是否存在,可以直接调用其相关的set方法设置数据后保存。
  既然查不到记录,JDiy也会返回一个Rs对象,那我们怎么知道倒底有没有查询到记录呢?这时我们可以通过Rs对象的isNull方法来判断判断,当没有查到记录时,此方法将会返回true, 如:
Rs user = dao.rs(new Args("user_info", "id=1");
if(user.isNull()){
   System.out.println("没有找到。");
}else{
 //todo something
}
  在前面我们说到,Rs对象对应于数据库中的记录。这并不表示一个Rs对象只能返回一张表中的某条记录,实际上,任何返回的查询结果,都可以映射为一个Rs对象。
  例如(多表查询):
Args args = new Args("user_info u, user_type t", "u.type_id = t.id AND u.id=1",  "u.*, t.name AS typeName");
Rs rs=dao.rs(args);
  又如(统计):
Rs rs = dao.rs(new Args("user_info", "id>100", "count(id) AS cnt"));
(注:实际上我们有专门的统计数量的方法“dao.len(Args args)”,此处只是为了说明查询,所以才这样写。)
  自JDiy-1.12及后续版本开始,JDiy还可以直接通过原生SQL语句返回单条记录,如:
Rs rs = dao.rs("select * from user_info where id=1");
[ 上一篇 使用Args参数对象创建查询   下一篇 利用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号码以便我们能与您取得联系。