Android xUtils框架(一) DbUtils
2016-03-11 15:21
288 查看
框架地址:https://github.com/wyouflf/xUtils
创建数据库
DaoConfig config = new DaoConfig(context);
config.setDbName(“xUtils-demo”); //db名
config.setDbVersion(1); //db版本
DbUtils db = DbUtils.create(config);//db还有其他的一些构造方法,比如含有更新表版本的监听器的
创建表
db.createTableIfNotExist(User.class); //创建一个表User
db.save(user);//在表中保存一个user对象。最初执行保存动作时,也会创建User表
删除表
db.dropTable(User.class);
开启事务
db.configAllowTransaction(true);
db相关Annotation
@Check check约束
@Column 列名
@Finder 一对多、多对一、多对多关系(见sample的Parent、Child中的使用)
@Foreign 外键
@Id 主键,当为int类型时,默认自增。 非自增时,需要设置id的值
@NoAutoIncrement 不自增
@NotNull 不为空
@Table 表名
@Transient 不写入数据库表结构
@Unique 唯一约束
一些常用方法
[java] view plain copy print?在CODE上查看代码片派生到我的代码片
DbUtils db = DbUtils.create(this);
User user = new User(); //这里需要注意的是User对象必须有id属性,或者有通过@ID注解的属性
user.setEmail(“wyouflf@qq.com”);
user.setName(“wyouflf”);
db.save(user); // 使用saveBindingId保存实体时会为实体的id赋值
…
// 查找
Parent entity = db.findById(Parent.class, parent.getId());
List list = db.findAll(Parent.class);//通过类型查找
Parent Parent = db.findFirst(Selector.from(Parent.class).where(“name”,”=”,”test”));
// IS NULL
Parent Parent = db.findFirst(Selector.from(Parent.class).where(“name”,”=”, null));
// IS NOT NULL
Parent Parent = db.findFirst(Selector.from(Parent.class).where(“name”,”!=”, null));
// WHERE id<54 AND (age>20 OR age<30) ORDER BY id LIMIT pageSize OFFSET pageOffset
List list = db.findAll(Selector.from(Parent.class)
.where(“id” ,”<”, 54)
.and(WhereBuilder.b(“age”, “>”, 20).or(“age”, ” < “, 30))
.orderBy(“id”)
.limit(pageSize)
.offset(pageSize * pageIndex));
// op为”in”时,最后一个参数必须是数组或Iterable的实现类(例如List等)
Parent test = db.findFirst(Selector.from(Parent.class).where(“id”, “in”, new int[]{1, 2, 3}));
// op为”between”时,最后一个参数必须是数组或Iterable的实现类(例如List等)
Parent test = db.findFirst(Selector.from(Parent.class).where(“id”, “between”, new String[]{“1”, “5”}));
DbModel dbModel = db.findDbModelAll(Selector.from(Parent.class).select(“name”));//select(“name”)只取出name列
List dbModels = db.findDbModelAll(Selector.from(Parent.class).groupBy(“name”).select(“name”, “count(name)”));
…
//例:分组聚合查询出 Parent表中 非重复的name和它的对应数量
List dbModels = db.findDbModelAll(Selector.form(Parent.class).select(“distinct name,count(name) as num”).groupBy(“name”));
db.execNonQuery(“sql”) // 执行自定义sql
…
db相关类库结构:
[plain] view plain copy print?在CODE上查看代码片派生到我的代码片
com.lidroid.xutils.db.annotation
Check.java
Column.java
Finder.java
Foreign.java
Id.java
NoAutoIncrement.java
NotNull.java
Table.java
Transient.java
Unique.java
com.lidroid.xutils.db.converter
BooleanColumnConverter.java
ByteArrayColumnConverter.java
ByteColumnConverter.java
CharColumnConverter.java
ColumnConverter.java
ColumnConverterFactory.java
DateColumnConverter.java
DoubleColumnConverter.java
FloatColumnConverter.java
IntegerColumnConverter.java
LongColumnConverter.java
ShortColumnConverter.java
SqlDateColumnConverter.java
StringColumnConverter.java
com.lidroid.xutils.db.sqlite
ColumnDbType.java
CursorUtils.java
DbModelSelector.java
FinderLazyLoader.java
ForeignLazyLoader.java
Selector.java
SqlInfo.java
SqlInfoBuilder.java
WhereBuilder.java
com.lidroid.xutils.db.table
Column.java
ColumnUtils.java
DbModel.java
Finder.java
Foreign.java
Id.java
KeyValue.java
Table.java
TableUtils.java
创建数据库
DaoConfig config = new DaoConfig(context);
config.setDbName(“xUtils-demo”); //db名
config.setDbVersion(1); //db版本
DbUtils db = DbUtils.create(config);//db还有其他的一些构造方法,比如含有更新表版本的监听器的
创建表
db.createTableIfNotExist(User.class); //创建一个表User
db.save(user);//在表中保存一个user对象。最初执行保存动作时,也会创建User表
删除表
db.dropTable(User.class);
开启事务
db.configAllowTransaction(true);
db相关Annotation
@Check check约束
@Column 列名
@Finder 一对多、多对一、多对多关系(见sample的Parent、Child中的使用)
@Foreign 外键
@Id 主键,当为int类型时,默认自增。 非自增时,需要设置id的值
@NoAutoIncrement 不自增
@NotNull 不为空
@Table 表名
@Transient 不写入数据库表结构
@Unique 唯一约束
一些常用方法
[java] view plain copy print?在CODE上查看代码片派生到我的代码片
DbUtils db = DbUtils.create(this);
User user = new User(); //这里需要注意的是User对象必须有id属性,或者有通过@ID注解的属性
user.setEmail(“wyouflf@qq.com”);
user.setName(“wyouflf”);
db.save(user); // 使用saveBindingId保存实体时会为实体的id赋值
…
// 查找
Parent entity = db.findById(Parent.class, parent.getId());
List list = db.findAll(Parent.class);//通过类型查找
Parent Parent = db.findFirst(Selector.from(Parent.class).where(“name”,”=”,”test”));
// IS NULL
Parent Parent = db.findFirst(Selector.from(Parent.class).where(“name”,”=”, null));
// IS NOT NULL
Parent Parent = db.findFirst(Selector.from(Parent.class).where(“name”,”!=”, null));
// WHERE id<54 AND (age>20 OR age<30) ORDER BY id LIMIT pageSize OFFSET pageOffset
List list = db.findAll(Selector.from(Parent.class)
.where(“id” ,”<”, 54)
.and(WhereBuilder.b(“age”, “>”, 20).or(“age”, ” < “, 30))
.orderBy(“id”)
.limit(pageSize)
.offset(pageSize * pageIndex));
// op为”in”时,最后一个参数必须是数组或Iterable的实现类(例如List等)
Parent test = db.findFirst(Selector.from(Parent.class).where(“id”, “in”, new int[]{1, 2, 3}));
// op为”between”时,最后一个参数必须是数组或Iterable的实现类(例如List等)
Parent test = db.findFirst(Selector.from(Parent.class).where(“id”, “between”, new String[]{“1”, “5”}));
DbModel dbModel = db.findDbModelAll(Selector.from(Parent.class).select(“name”));//select(“name”)只取出name列
List dbModels = db.findDbModelAll(Selector.from(Parent.class).groupBy(“name”).select(“name”, “count(name)”));
…
//例:分组聚合查询出 Parent表中 非重复的name和它的对应数量
List dbModels = db.findDbModelAll(Selector.form(Parent.class).select(“distinct name,count(name) as num”).groupBy(“name”));
db.execNonQuery(“sql”) // 执行自定义sql
…
db相关类库结构:
[plain] view plain copy print?在CODE上查看代码片派生到我的代码片
com.lidroid.xutils.db.annotation
Check.java
Column.java
Finder.java
Foreign.java
Id.java
NoAutoIncrement.java
NotNull.java
Table.java
Transient.java
Unique.java
com.lidroid.xutils.db.converter
BooleanColumnConverter.java
ByteArrayColumnConverter.java
ByteColumnConverter.java
CharColumnConverter.java
ColumnConverter.java
ColumnConverterFactory.java
DateColumnConverter.java
DoubleColumnConverter.java
FloatColumnConverter.java
IntegerColumnConverter.java
LongColumnConverter.java
ShortColumnConverter.java
SqlDateColumnConverter.java
StringColumnConverter.java
com.lidroid.xutils.db.sqlite
ColumnDbType.java
CursorUtils.java
DbModelSelector.java
FinderLazyLoader.java
ForeignLazyLoader.java
Selector.java
SqlInfo.java
SqlInfoBuilder.java
WhereBuilder.java
com.lidroid.xutils.db.table
Column.java
ColumnUtils.java
DbModel.java
Finder.java
Foreign.java
Id.java
KeyValue.java
Table.java
TableUtils.java
相关文章推荐
- Android 7.0 给开发者带来了什么
- android 对象序列化
- ubuntu14.04Tls 64位完美搭建android开发环境。
- Android环境搭建
- Android 控件重复初始化影响隐藏和显示的控制
- Gradle, Android and the ANDROID_HOME SDK location
- Android PullToRefreshLayout下拉刷新控件的终结者
- android开机动画bootanimation
- Android之Glide获取图片Path、Bitmap用法
- Android开发从系统图库中选择一张图片的方法
- Android属性动画封装,快速构建动画
- Android PDF开发:android-pdfview
- [Android Studio] Android Studio常用快捷键
- 五步搞定Android开发环境部署——非常详细的Android开发环境搭建教程
- Android EditText的设置
- Android PickerView滚动选择器的使用方法
- Android中ListView设置点击颜色改变的想法
- Android更改checkbox的style
- Android Activity生命周期详解
- android应用程序中对于ANR主线程超时不响应导致强制关闭的解决方案