Android orm 框架xUtils简介
数据库操作建议用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简介的更多相关文章
- 简单实用的Android ORM框架TigerDB
TigerDB是一个简单的Android ORM框架,它能让你一句话实现数据库的增删改查,同时支持实体对象的持久化和自动映射,同时你也不必关心表结构的变化,因为它会自动检测新增字段来更新你的表结构. ...
- android hook 框架 libinject2 简介、编译、运行
Android so注入-libinject2 简介.编译.运行 Android so注入-libinject2 如何实现so注入 Android so注入-Libinject 如何实现so注入 A ...
- 最好的5个Android ORM框架
在开发Android应用时,保存数据有这么几个方式, 一个是本地保存,一个是放在后台(提供API接口),还有一个是放在开放云服务上(如 SyncAdapter 会是一个不错的选择). 对于第一种方式, ...
- Android ORM 框架之 greenDAO 使用心得
前言 我相信,在平时的开发过程中,大家一定会或多或少地接触到 SQLite.然而在使用它时,我们往往需要做许多额外的工作,像编写 SQL 语句与解析查询结果等.所以,适用于 Android 的ORM ...
- 推荐的Android ORM框架
1. OrmLite OrmLite 不是 Android 平台专用的ORM框架,它是Java ORM.支持JDBC连接,Spring以及Android平台.语法中广泛使用了注解(Annotation ...
- 最受欢迎的5个Android ORM框架
在开发Android应用时,保存数据有这么几个方式, 一个是本地保存,一个是放在后台(提供API接口),还有一个是放在开放云服务上(如 SyncAdapter 会是一个不错的选择). 对于第一种方式, ...
- Android ORM 框架之 greenDAO
前言 我相信,在平时的开发过程中,大家一定会或多或少地接触到 SQLite.然而在使用它时,我们往往需要做许多额外的工作,像编写 SQL 语句与解析查询结果等.所以,适用于 Android 的ORM ...
- 对象关系映射(ORM)框架GreenDao简介和基本使用
官网上的介绍,greenDAO 是一个将对象映射到 SQLite 数据库中的轻量且快速的 ORM 解决方案. GreenDao特点 性能最大化,可能是Android平台上最快的ORM框架 易于使用的A ...
- android hook 框架 ADBI 简介、编译、运行
Android so注入-libinject2 简介.编译.运行 Android so注入-libinject2 如何实现so注入 Android so注入-Libinject 如何实现so注入 A ...
随机推荐
- 南京网络赛G-Lpl and Energy【线段树】
During tea-drinking, princess, amongst other things, asked why has such a good-natured and cute Drag ...
- pandas的DataFrame用法
用来生成DataFrame数据 1.说明: class pandas.DataFrame(data=None, index=None, columns=None, dtype=None, copy=F ...
- India and China Origins---hdu5652(二分 + bfs)或者(并查集)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5652 题意: 很久以前,中国和印度之间并没有喜马拉雅山相隔,两国的文化交流很频繁.随着喜马拉雅山海拔逐 ...
- Nginx 使用总结
一.使用 nginx 实现 灰度发布 灰度发布,现在是很多大项目的一个标配运维特性,我们可以将一个“新的版本代码”发布到集群中的少数几台(组)机器上,以便引入线上少量真实用 户进行测试,用于验证产品改 ...
- 关于uuid与自增列的选择
关于uuid与自增列的选择 在db交流群里看到有人提问,说他的userName 登录名是唯一的,可以用其做主键嘛,如果用自增列,那又要多一列. 后面又说,如果要用主键ID,用uuid会不会好一些呢?作 ...
- Spark checkpoint机制简述
本文主要简述spark checkpoint机制,快速把握checkpoint机制的来龙去脉,至于源码可以参考我的下一篇文章. 1.Spark core的checkpoint 1)为什么checkpo ...
- 记一次mysql启动不了的问题
在linux上用的是xampp,mysql启动没有报任何错误,但就是查找不到进程,于是找mysql错误日志,日志在哪?在lampp/var/mysql 以.err结尾的文件里.里面内容如下; /opt ...
- mongodb安装及副本集搭建
mongodb下载地址:https://www.mongodb.com/dr/fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.2.7.tg ...
- WebService—规范介绍和几种实现WebService的框架介绍
一.关于SOA(面向服务架构)思想 1.关于协议 2.SOA 的诞生 SOA(Service-Oriented Architecture)面向服务架构是一种思想,它将应用程序的不同功能单元通过 ...
- Polya
using namespace std; typedef long long LL; const int MAXN = 1e3 +10; const LL MOD = (LL)1 << 6 ...