xUtils框架的介绍(三)

接上回,继续介绍xUtils的最后两个模块:DbUtils和HttpUtils。首先先介绍第一个SQLite数据库操纵的简单ORM框架,只要能理解xUtils为我们提供的api,相信你也能熟练的把DbUtils用到项目中去。

操纵数据库的工具类,无论多牛X,总离不开最根本的CRUD,即创建,查询,更新和删除。下面从这四个角度依次介绍xUtils是如何简便持久化数据的。大家都知道,在Android里面如果要存储一个对象,我们需要创建一个SQLiteOpenHelper,然后还得创建一张对应对象各个属性的表,还得继续把我们的对象转换成ContentValues,进而去存储。真心是麻烦的不能再麻烦了,我们现在介绍的DbUtils就能让你轻松解脱麻绳一样的代码。DbUtils在进行save操作的时候,会根据java反射反射出对象的各个字段,然后去查询数据库中是否存在这个对象类型对应的表,如果表已经存在,直接进行插入操作;如果不存在,就先动态的创建的一张对应我们对象的表,再进行插入处理。直接上代码,大家看。

[java] view
plain
copy

  1.     @OnClick(R.id.insert)  
  2.     public void insert(View v) {  
  3.         Student stu = null;  
  4.         for (int i = 0; i < 20; i++) {  
  5.             stu = new Student();  
  6.             stu.setAge(10 + i);  
  7.             stu.setName("jack" + i);  
  8.             mList.add(stu);  
  9.             try {  
  10.                 dbUtils.save(stu);  
  11.             } catch (DbException e) {  
  12.                 e.printStackTrace();  
  13.             }  
  14.         }  
  15.     }  

注意:并不是所有的实体对象都快可以通过这种方式去存储,一定要保证对象的类型中有int类型的id或者_id的属性,这就对应数据库表中的主键字段。如果类型中没有id字段,可以通过@Id注解去指定一个int类型的字段作为主键。如果表中的又字段不想被存储在数据库中,也可以通过@Transient去实现忽略。如果直接存储一个对象的列表,这样也是被允许的,达到批量存储的目的。

DbUtils可以帮助对SQL语句不是很熟悉的同学快速的实现查询,而不用去写sql查询语句,而且可以对查询结果进行排序和分页,使用简单,功能强大。大家可以看下,下面的几行代码就能实现复杂的查询功能

  1. dbUtils.findAll(Selector.from(Student.class) .where("_id",
    "<", 10).and("age", ">", 10).orderBy("_id").limit(pageSize).offset(pageSize * pageIndex));
     

同样的,也可以对数据库中得数据进行便捷的更新。下面演示的是更新Student对应的表中的第一条记录的age这个字段。这个比较简单,就直接上代码看吧。

[java] view
plain
copy

  1.     @OnClick(R.id.update)  
  2.     public void update(View v){  
  3.         try {  
  4.             List<Student> stus = dbUtils.findAll(Selector.from(Student.class));  
  5.             Student stu = stus.get(0);  
  6.             stu.setAge(20);  
  7.             dbUtils.update(stu);  
  8.         } catch (DbException e) {  
  9.             e.printStackTrace();  
  10.         }  
  11.     }  

最后一个就是数据的删除。一个实体对象,一组实体对象,根据条件删除,删除表,删除整个数据库,这些操作都可以通过一句简单的代码来实现,看了代码就明白了。

  1.     @OnClick(R.id.delete)  
  2.     public void delete(View v){  
  3.         try {  
  4.             List<Student> stus = dbUtils.findAll(Selector.from(Student.class));  
  5.             dbUtils.delete(stus.get(0));  
  6.             dbUtils.deleteAll(stus);  
  7.             dbUtils.deleteById(Student.class, WhereBuilder.b("age", "==", 20));  
  8.             dbUtils.dropTable(Student.class);  
  9.             dbUtils.dropDb();  
  10.         } catch (DbException e) {  
  11.             e.printStackTrace();  
  12.         }  
  13.     }  

文章转载地址: http://blog.csdn.net/lanyeming2012/article/details/14147975

时间: 2024-08-30 14:36:41

xUtils框架的介绍(三)的相关文章

xUtils框架的介绍(一)

今天我要为大家推荐的是一个Android基于快速开发的一个框架--xUtils,它是在aFinal基础上进行重构和扩展的框架,相比aFinal有很大的改善.同时,如果如果你的应用是基于网络的,那么只要处理得当,它会让你彻底的摆脱各种工具类和重复代码的困扰.好的,废话不多说,程序猿们还是代码说起.     xUtils 包含了很多实用的android工具.xUtils 源于Afinal框架,对Afinal进行了大量重构,使得xUtils支持大文件上传,更全面的http请求协议支持,拥有更加灵活的O

xUtils框架的介绍(二)

xUtils中有四大组件可以供我们使用,分别是ViewUtils.HttpUtils.BitmapUtils以及DbUtils.如果你没能先读一下我的上一篇文章,那么请你移步过去先整体了解一下,再回过头来看这篇文章,相信你回更有体会的. 下面依次开始介绍这些组件具体的使用. 一.ViewUtils  android中得ioc(控制反转)框架,可以完全使用注解的方式来完成UI的绑定和事件绑定.简单的说,ViewUtils的功能就是做这个的,但是可以说,就这么个功能确是能极大的简化我们的代码.下面我

xUtils框架的介绍(四)

今天介绍xUtils的最后一个模块--HttpUtils,拖了那么久,终于要结束了.另外,码字不易,如果大家有什么疑问和见解,欢迎大家留言讨论.HttpUtils是解决日常工作过程中繁杂的上传下载文件以及各种Get和post请求的必备工具类,通过这个类,开源非常方便关注接口的业务,不必再再写那么冗长的代码.下面全文都围绕着四个中心点去依次展开,分别是:HttpGet请求,HttpPost请求,下载文件和上传文件. HttpGet请求.相信从事Android网络应用的开发的同学对这个一定不会陌生,

Android Xutils框架使用问题及解决办法

    刚刚写了篇博客,提了下在使用XUtils时遇到的一个问题Android Xutils框架HttpUtil Get请求缓存问题 ,既然已经提起来这个问题,那我想了下,就把之前使用Xutils时遇到的几个小问题整理一下. 一. HttpUtil Get请求缓存问题       关于Xtuls框架的Http模块的get请求方法,会有缓存问题--即进行get请求时,在缓存规定的时间内,如果发送同样的请求url,则不会再次请服务器发送请求,而是直接返回上次请求的结果. 之前写了一篇博客已经介绍的很

Android Xutils框架HttpUtil Get请求缓存问题

  话说,今天和服务器开发人员小小的逗逼了一下,为啥呢?   话说今天有个"收藏产品"的请求接口,是get request的哦,我客户端写好接口后,点击"收藏按钮",返回"收藏成功",我又点了一下,尼玛居然还是"收藏成功",我再点一下,这下对了,返回给我"取消收藏成功",好吧,我又点了一下,彻底郁闷了,居然又是"取消收藏成功",这不是逗我的么?   于是我让服务器人员检查他的接口,是不是

[置顶].NET平台开源项目速览(13)机器学习组件Accord.NET框架功能介绍

    Accord.NET Framework是在AForge.NET项目的基础上封装和进一步开发而来.因为AForge.NET更注重与一些底层和广度,而Accord.NET Framework更注重与机器学习算法以及提供计算机视频.音频.信号处理以及统计应用相关的解决方案.该项目使用C#语言编写,项目主页:http://accord-framework.net/     说明:该文章只是一个基本介绍,主要内容是翻译的官方文档和介绍,部分英文表述个人能力有限,不太熟悉,所以直接照搬原文,有比较

《精通 ASP.NET MVC 3 框架(第三版)》---- 1.2 当今的Web开发

1.2 当今的Web开发 精通 ASP.NET MVC 3 框架(第三版) 除微软之外,自Web Form首次发布以来,Web开发技术发展迅速,这表现在几个不同的方向.除了已经提及的AJAX之外,还有一些其他的主要发展. 1.2.1 Web标准与REST 近些年来,向Web标准兼容的趋势已在增强.Web网站建立在比以往更广泛的设备和浏览器之上,Web标准(HTML.CSS.JavaScript等)使人们有望能够在任何地方--甚至在可联网的冰箱上--都可以有相当好的浏览体验.现代Web平台不可忽视

简单介绍三款常用的建站工具

建站软件有很多,但是网站建设大致分为手工建站和自助建站.简单的说,手工建站就是根据自己的需求去设计和开发网站:自助建站就是基于已经成形的网站系统框架,只要将内容填充到框架中,一个网站就可以基本完成.但不管怎么说他们都需要一定的软件做基础! 下面简单介绍三款常用的建站工具 第一款:Dreamweaver(手工建站工具) Dreamweaver软件和Fireworks,flash合称网页三剑客,他是由美国软件开发商Macromedia公司研发并推出的一款可视化网站开发工具. 后来Macromedia

Lucene.Net 2.3.1开发介绍 —— 三、索引(一)

原文:Lucene.Net 2.3.1开发介绍 -- 三.索引(一) 在说索引之前,先说说索引是什么?为什么要索引?怎么索引?   先想想看,假如现在有一个文本,我们会怎么去搜索.比如,有一个string = "abcdefghijklmnopqrstuvwxyz",这都是26个字母.现在要看看里面是不是有a,用IndexOf就可以很方便实现.现在数据量大了,在数据库里已经有100多条数据了,当然,利用数据库提供的操作方法,也可以很方便的查找.而这里先抛开数据库,把这100多条记录放到