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

最新文章

  1. CentOS上安装man手册
  2. webpack入坑之旅(一)不是开始的开始
  3. JAVA获取apk包的package和launchable-activity名称(一)
  4. cxf(3.1.1) 异常Caused by: java.io.FileNotFoundException: class path resource [META-INF/cxf/cxf-extension-soap.xml]
  5. 我的android学习经历31
  6. ThinkPHP实现移动端访问自动切换主题模板
  7. python安装requests (win7 &amp; centos7)
  8. poj 1753 Flip Game(bfs状态压缩 或 dfs枚举)
  9. android FragmentPagerAdapter的“标准”配置
  10. c# BackgroundWorker初试
  11. js Infinity 属性
  12. Windows安装PostgreSQL11.1
  13. django----数据库表设计
  14. yum配置文件中baseurl和mirrorlist的区别
  15. ssh 断开解决办法
  16. Docker的volume机制实现容器数据的持久性存储
  17. Mininet 系列实验(七)
  18. Linux软件安装方法
  19. EasyUI 扩展自定义EasyUI校验规则 验证规则
  20. AlertDialog中使用ListView绑定数据

热门文章

  1. js的DOM节点操作:创建 ,插入,删除,复制,查找节点
  2. linux源码安装
  3. golang之if
  4. JavaScript远程调用
  5. CLTPHP5.0发布
  6. ASP.NET自定义控件组件开发 第一章 第一章:从一个简单的控件谈起
  7. 【JZOJ4161】于神之怒 莫比乌斯反演
  8. 【JZOJ3598】【CQOI2014】数三角形
  9. 7 种 Javascript 常用设计模式学习笔记
  10. 外贸电子商务网站之Prestashop 设置网站基本信息