您的位置:首页 > 移动开发 > Android开发

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: