数据库操作建议用ORM框架,简单高效。这里推荐xUtils,里面包含DBUtils。github地址:https://github.com/wyouflf/xUtils

  获得数据库实例建议用单例模式。

 static DbUtils db = null;
  public static DbUtils getDb(Context context) {
    if (context == null) {
      context = DoctorApplication.getInstance();
    }
    if (db == null) {
      db = DbUtils.create(context, "xUtils.db");
    });
    db.configAllowTransaction(true);
    return db;
  }
    db.configAllowTransaction(true);
    return db;
}

  创建一个实体类,对应数据库中的表。

@Table(name = "User")
  public class User {
    private int id; //主键ID,必须
    private String uid;  
    private String type;
    public int getId() {
   return id;
  }
   public void setId(int id) {
      this.id = id;
   }
    public String getType() {
      return type;
    }  
    public void setType(String type) {
      this.type = type;
    }
    public String getUid() {
      return uid;
    }
    public void setUid(String uid) {
      this.uid = uid;
    }
  }

  查找:

// 查找,根据主键ID查找
User userTemp = db.findById(User.class, user.getId());
List<User> list = db.findAll(User.class);//通过类型查找,查找所有 User user = db.findFirst(Selector.from(User.class).where("type","=","0")); // IS NULL
User user = db.findFirst(Selector.from(User.class).where("type","=", null));
// IS NOT NULL
User user = db.findFirst(Selector.from(User.class).where("type","!=", null));
List<User> list = db.findAll(Selector.from(User)
.where("id" ,"<", 54)
.and(WhereBuilder.b("id", ">", 20).or("id", " < ", 30))
.orderBy("id")
.limit(pageSize)
.offset(pageSize * pageIndex)); // op为"in"时,最后一个参数必须是数组或Iterable的实现类(例如List等)
User test = db.findFirst(Selector.from(User.class).where("id", "in", new int[]{1, 2, 3}));
// op为"between"时,最后一个参数必须是数组或Iterable的实现类(例如List等)
User test = db.findFirst(Selector.from(User.class).where("uid", "between", new String[]{"1", "5"})); DbModel dbModel = db.findDbModelAll(Selector.from(User.class).select("uid"));//select("name")只取出name列
List<DbModel> dbModels = db.findDbModelAll(Selector.from(User.class).groupBy("type").select("uid", "count(uid)"));
... List<DbModel> dbModels = db.findDbModelAll(sql); // 自定义sql查询
db.execNonQuery(sql) // 执行自定义sql //多条件混合查询

List<User> userEnts = TCommUtil.getDb(this).findAll(Selector.from(User.class).where(WhereBuilder.b("id", ">", 5).or("id", "<", 3)).and("uid", "=", "0"));

//模糊查询like

 String str = "select id,nickname,age,gender,zhenduan,avatar,pid,type from User where uid = "

+ uid

+ " and type like '%"

+ value + "%'";

Cursor cursor = TCommUtil.getDb(this).execQuery(str);

cursor.moveToFirst();

for (int i = 0; i < cursor.getCount(); i++) {

  User userEnt = new User();

   userEnt.setId(cursor.getInt(0));

   ...

  cursor.moveToNext();

}

cursor.close();

  保存

User userEnt = new User();
TCommUtil.getDb(this).save(user); List<User> userEnts = new ArrayList<User>();
TCommUtil.getDb(this).saveAll(userEnts);

  删除

TCommUtil.getDb(this).deleteAll(User.class);
TCommUtil.getDb(this).delete(User.class, WhereBuilder.b("id", "=", 3));

  修改 

userEnt.setType("3");
TCommUtil.getDb(this).update(userEnt, WhereBuilder.b("id", "=", 0), "type");

Android orm 框架xUtils简介的更多相关文章

  1. 简单实用的Android ORM框架TigerDB

    TigerDB是一个简单的Android ORM框架,它能让你一句话实现数据库的增删改查,同时支持实体对象的持久化和自动映射,同时你也不必关心表结构的变化,因为它会自动检测新增字段来更新你的表结构. ...

  2. android hook 框架 libinject2 简介、编译、运行

    Android so注入-libinject2 简介.编译.运行 Android so注入-libinject2  如何实现so注入 Android so注入-Libinject 如何实现so注入 A ...

  3. 最好的5个Android ORM框架

    在开发Android应用时,保存数据有这么几个方式, 一个是本地保存,一个是放在后台(提供API接口),还有一个是放在开放云服务上(如 SyncAdapter 会是一个不错的选择). 对于第一种方式, ...

  4. Android ORM 框架之 greenDAO 使用心得

    前言 我相信,在平时的开发过程中,大家一定会或多或少地接触到 SQLite.然而在使用它时,我们往往需要做许多额外的工作,像编写 SQL 语句与解析查询结果等.所以,适用于 Android 的ORM  ...

  5. 推荐的Android ORM框架

    1. OrmLite OrmLite 不是 Android 平台专用的ORM框架,它是Java ORM.支持JDBC连接,Spring以及Android平台.语法中广泛使用了注解(Annotation ...

  6. 最受欢迎的5个Android ORM框架

    在开发Android应用时,保存数据有这么几个方式, 一个是本地保存,一个是放在后台(提供API接口),还有一个是放在开放云服务上(如 SyncAdapter 会是一个不错的选择). 对于第一种方式, ...

  7. Android ORM 框架之 greenDAO

    前言 我相信,在平时的开发过程中,大家一定会或多或少地接触到 SQLite.然而在使用它时,我们往往需要做许多额外的工作,像编写 SQL 语句与解析查询结果等.所以,适用于 Android 的ORM  ...

  8. 对象关系映射(ORM)框架GreenDao简介和基本使用

    官网上的介绍,greenDAO 是一个将对象映射到 SQLite 数据库中的轻量且快速的 ORM 解决方案. GreenDao特点 性能最大化,可能是Android平台上最快的ORM框架 易于使用的A ...

  9. android hook 框架 ADBI 简介、编译、运行

    Android so注入-libinject2 简介.编译.运行 Android so注入-libinject2  如何实现so注入 Android so注入-Libinject 如何实现so注入 A ...

随机推荐

  1. 南京网络赛G-Lpl and Energy【线段树】

    During tea-drinking, princess, amongst other things, asked why has such a good-natured and cute Drag ...

  2. pandas的DataFrame用法

    用来生成DataFrame数据 1.说明: class pandas.DataFrame(data=None, index=None, columns=None, dtype=None, copy=F ...

  3. India and China Origins---hdu5652(二分 + bfs)或者(并查集)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5652 题意: 很久以前,中国和印度之间并没有喜马拉雅山相隔,两国的文化交流很频繁.随着喜马拉雅山海拔逐 ...

  4. Nginx 使用总结

    一.使用 nginx 实现 灰度发布 灰度发布,现在是很多大项目的一个标配运维特性,我们可以将一个“新的版本代码”发布到集群中的少数几台(组)机器上,以便引入线上少量真实用 户进行测试,用于验证产品改 ...

  5. 关于uuid与自增列的选择

    关于uuid与自增列的选择 在db交流群里看到有人提问,说他的userName 登录名是唯一的,可以用其做主键嘛,如果用自增列,那又要多一列. 后面又说,如果要用主键ID,用uuid会不会好一些呢?作 ...

  6. Spark checkpoint机制简述

    本文主要简述spark checkpoint机制,快速把握checkpoint机制的来龙去脉,至于源码可以参考我的下一篇文章. 1.Spark core的checkpoint 1)为什么checkpo ...

  7. 记一次mysql启动不了的问题

    在linux上用的是xampp,mysql启动没有报任何错误,但就是查找不到进程,于是找mysql错误日志,日志在哪?在lampp/var/mysql 以.err结尾的文件里.里面内容如下; /opt ...

  8. mongodb安装及副本集搭建

    mongodb下载地址:https://www.mongodb.com/dr/fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.2.7.tg ...

  9. WebService—规范介绍和几种实现WebService的框架介绍

    一.关于SOA(面向服务架构)思想   1.关于协议   2.SOA 的诞生 SOA(Service-Oriented Architecture)面向服务架构是一种思想,它将应用程序的不同功能单元通过 ...

  10. Polya

    using namespace std; typedef long long LL; const int MAXN = 1e3 +10; const LL MOD = (LL)1 << 6 ...