接上回,继续介绍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",
    "<").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

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

  1. xUtils框架的介绍(一)

    微信账号申请终于通过了,这是我们第一次Android干货分享. 想来是第一次,要对得起“干货”二字. 今天我要为大家推荐的是一个Android基于快速开发的一个框架——xUtils, 它是在aFina ...

  2. python nose测试框架全面介绍三

    三.nose的测试工具集 nose.tools模块提供了一系列的小工具,包括测试执行时间.异常输出及unittest框架中所有的assert功能. 为了使写用例更加容易,nose.tools提供了部分 ...

  3. xUtils框架的介绍(二)

    xUtils中有四大组件可以供我们使用,分别是ViewUtils.HttpUtils.BitmapUtils以及DbUtils.如果你没能先读一下我的上一篇文章,那么请你移步过去先整体了解一下,再回过 ...

  4. Go语言Web框架gwk介绍 (三)

    上一篇忘了ChanResult ChanResult 可以用来模拟BigPipe,定义如下 type ChanResult struct { Wait sync.WaitGroup Chan chan ...

  5. xUtils框架的介绍(四)

    今天介绍xUtils的最后一个模块--HttpUtils,拖了那么久,终于要结束了.另外,码字不易,如果大家有什么疑问和见解,欢迎大家留言讨论.HttpUtils是解决日常工作过程中繁杂的上传下载文件 ...

  6. Go语言Web框架gwk介绍 3

    Go语言Web框架gwk介绍 (三)   上一篇忘了ChanResult ChanResult 可以用来模拟BigPipe,定义如下 type ChanResult struct { Wait syn ...

  7. XUTils框架的学习(三)

    前面两章说了xutils框架的引入和注解模块的使用和数据库模块的使用,想了解的朋友可以去看看. 前面在说数据库模块的操作的时候是手动创建数据库并保存在asset文件夹里面,再通过I/O将数据库写进应用 ...

  8. xUtils框架

    我要为大家推荐的是一个Android基于快速开发的一个框架——xUtils,它是在aFinal基础上进行重构和扩展的框架,相比aFinal有很大的改善.同时,如果如果你的应用是基于网络的,那么只要处理 ...

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

    刚刚写了篇博客,提了下在使用XUtils时遇到的一个问题Android Xutils框架HttpUtil Get请求缓存问题 ,既然已经提起来这个问题,那我想了下,就把之前使用Xutils时遇到的几个 ...

随机推荐

  1. Flask – SQLite:增加成员

    目录 简介 结构 展示 技术 运行 代码 创建数据库表单 views视图 models模块 home主页 list列表页 result消息结果页 studentst添加成员 简介 结构 $ tree ...

  2. GCC/GDB学习

    GCC学习 1.gcc是根据后缀名来区分文件的 .c : c语言源文件 .a : 目标文件构成的库文件 .C/.cc/.cxx : c++源文件 .h : 头文件 .i : 预处理过的C源文件 .ii ...

  3. python中的True和False

    返回真假时,需要为: return True return False

  4. 2017年浙工大迎新赛热身赛 A 毕业设计选题 【结构体排序】

    时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 65536K,其他语言131072K64bit IO Format: %lld 题目描述 又到了一年一度,大四老学长们毕业设计选题的时候, ...

  5. 洛谷 P2955 [USACO09OCT]奇数偶数Even? Odd?【字符串/易错】

    题目描述 Bessie's cruel second grade teacher has assigned a list of N (1 <= N <= 100) positive int ...

  6. JSP页面中验证码的调用方法

    步骤: 1.首先是要生成验证码 2.对验证码类进行调用:主要 实现的是  将验证码图片 输出到response.getOutputStream()这个输出流中 调用时,可以在页面调用,也可以在serv ...

  7. React 按需加载 - 代码分隔

    代码分隔 我们现在大多数React项目都是以Webpack 或者 Browserify等将一堆的jsx文件组织一起,并且由一个类似index.js的入口文件串联起来的单页面web页面. 例如: // ...

  8. python 运算符重复

  9. R语言实现Xbar-R控制图

    R语言实现Xbar-R控制图 Xbar-R控制图在质量管理中主要用于对计量数据进行检测,以达到控制对象质量的目的. 虽然用Excel可以轻松实现控制图的操作,不过作为R软件初学者,我试着用仅有的一点R ...

  10. 【JZOJ3873】【NOIP2014八校联考第4场第2试10.20】乐曲创作(music)

    ujfuiaty 小可可是音乐学院的一名学生,他需要经常创作乐曲完成老师布置的作业. 可是,小可可是一个懒惰的学生.所以,每次完成作业时,他不会重新创作一首新的乐曲,而是去修改上一次创作过的乐曲作为作 ...