前言
xUtils是一款快速开发android移动应用的框架,其包含了很多实用的android工具.
目前xUtils主要有四大模块:
- DbUtils模块
- ViewUtils模块
- HttpUtils模块
- BitmapUtils模块
xUtils项目github请见:xUtils
由于xUtils3 api变化较多, 已转至xUtils3
- 本文使用的xUtils版本为v3.1.22
DbUtils
- android中的orm框架,一行代码就可以进行增删改查;
- 支持事务,默认关闭;
- 可通过注解自定义表名,列名,外键,唯一性约束,NOT NULL约束,CHECK约束等(需要混淆> - 的时候请注解表名和列名);
- 支持绑定外键,保存实体时外键关联实体自动保存或更新;
- 自动加载外键关联实体,支持延时加载;
- 支持链式表达查询,更直观的查询语义
xutils3_db
通过androidStudio新建工程xutils3_db,引入xUtils3依赖:
在${project_dir}/build.gradle(Module:app)的dependencies函数内添加compile ‘org.xutils:xutils:3.1.22’ 。然后构建一下就引入了xUtils3框架添加相关权限
在清单文件src/main/AndroidManifest.xml的manifest节点下添加
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
xUtil的初始化
新建android.app.Application继承类me.kevingo.xutils3_db.MyApplication,复写onCreate()方法:
// 在application的onCreate中初始化 @Override public void onCreate() { super.onCreate(); x.Ext.init(this); x.Ext.setDebug(true); // 是否输出debug日志 }
在清单文件src/main/AndroidManifest.xml的Application节点添加属性android:name=”me.kevingo.xutils3_db.MyApplication”
通过以上的操作,就可以在代码中使用xUtils3的相关Api了
Entity
xUtils3中的DB模块提供了两个核心注解即org.xutils.db.annotation.Column和org.xutils.db.annotation.Table注解
- 加注了@Table的实体类将被映射到sqlite中的数据库表,@Table注解有属性name和onCreated两个属性,name属性决定了该实体类映射的数据库表名,而onCreated属性则可以用来添加表一级的属性或约束,例如创建联和唯一索引等
- 加注了@Column的实体类属性将会映射到sqlite数据库中的字段,@Column注解有name、property、isId、autoGen属性,name属性决定了实体类属性对应的数据库字段名;property属性可以用来添加数据库中字段一级的属性或约束条件例如not null,索引等;isId属性表示该字段是否是主键,默认为false;autoGen则表示如果一个字段为主键,是否自增长,默认为true,所以该字段只有在isId属性为true时有效.
- 未加注@Column注解的字段将不映射sqlite字段
新建User类
在me.kevingo.xutils3_db.entity包下新建User类,并添加@Table和@Column注解进行ORM映射
@Table(name = "user",
onCreated = "CREATE UNIQUE INDEX realative_unique ON user(NAME, EMAIL)") //为表创建NAME,EMAIL联合唯一索引
public class User {
@Column(
name = "ID",
isId = true,
autoGen = true
)
private int id;
@Column(name = "NAME",property = "NOT NULL")//NAME字段非空
private String name;
@Column(name = "EMAIL",property = "NOT NULL")
private String email;
@Column(name = "MOBILE")
private String mobile;
@Column(name = "REGTIME")
private Date regTime;
public User(){
}
public User(String name, String email, String mobile,Date regTime){
this.name = name;
this.email =