Android xUtils框架(一) DbUtils


框架地址:https://github.com/wyouflf/xUtils


需要的权限

<uses-permissionandroid:name="android.permission.INTERNET"/>

    <uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/>


创建数据库

  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   唯一约束


一些常用方法

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<Parent> 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<Parent> 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<DbModel> dbModels = db.findDbModelAll(Selector.from(Parent.class).groupBy("name").select("name", "count(name)"));
...
//例:分组聚合查询出  Parent表中 非重复的name和它的对应数量
List<DbModel> dbModels = db.findDbModelAll(Selector.form(Parent.class).select("distinct name,count(name) as num").groupBy("name")); 
db.execNonQuery("sql") // 执行自定义sql
...

db相关类库结构:

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



  • 6
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值