xUtils框架之DbUtils

来源:互联网 发布:图像处理滤波器java 编辑:程序博客网 时间:2024/05/23 10:02

框架地址: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   唯一约束


一些常用方法

[java] view plain copy
 print?
  1. DbUtils db = DbUtils.create(this);  
  2. User user = new User(); //这里需要注意的是User对象必须有id属性,或者有通过@ID注解的属性  
  3. user.setEmail("wyouflf@qq.com");  
  4. user.setName("wyouflf");  
  5. db.save(user); // 使用saveBindingId保存实体时会为实体的id赋值  
  6.   
  7. ...  
  8. // 查找  
  9. Parent entity = db.findById(Parent.class, parent.getId());  
  10. List<Parent> list = db.findAll(Parent.class);//通过类型查找  
  11.   
  12. Parent Parent = db.findFirst(Selector.from(Parent.class).where("name","=","test"));  
  13.   
  14. // IS NULL  
  15. Parent Parent = db.findFirst(Selector.from(Parent.class).where("name","="null));  
  16. // IS NOT NULL  
  17. Parent Parent = db.findFirst(Selector.from(Parent.class).where("name","!="null));  
  18.   
  19. // WHERE id<54 AND (age>20 OR age<30) ORDER BY id LIMIT pageSize OFFSET pageOffset  
  20. List<Parent> list = db.findAll(Selector.from(Parent.class)  
  21.                                    .where("id" ,"<"54)  
  22.                                    .and(WhereBuilder.b("age"">"20).or("age"" < "30))  
  23.                                    .orderBy("id")  
  24.                                    .limit(pageSize)  
  25.                                    .offset(pageSize * pageIndex));  
  26.   
  27. // op为"in"时,最后一个参数必须是数组或Iterable的实现类(例如List等)  
  28. Parent test = db.findFirst(Selector.from(Parent.class).where("id""in"new int[]{123}));  
  29. // op为"between"时,最后一个参数必须是数组或Iterable的实现类(例如List等)  
  30. Parent test = db.findFirst(Selector.from(Parent.class).where("id""between"new String[]{"1""5"}));  
  31.   
  32. DbModel dbModel = db.findDbModelAll(Selector.from(Parent.class).select("name"));//select("name")只取出name列  
  33. List<DbModel> dbModels = db.findDbModelAll(Selector.from(Parent.class).groupBy("name").select("name""count(name)"));  
  34. ...  
  35. //例:分组聚合查询出  Parent表中 非重复的name和它的对应数量  
  36. List<DbModel> dbModels = db.findDbModelAll(Selector.form(Parent.class).select("distinct name,count(name) as num").groupBy("name"));   
  37. db.execNonQuery("sql"// 执行自定义sql  
  38. ...  

db相关类库结构:

[plain] view plain copy
 print?
  1. com.lidroid.xutils.db.annotation  
  2.     Check.java  
  3.     Column.java  
  4.     Finder.java  
  5.     Foreign.java  
  6.     Id.java  
  7.     NoAutoIncrement.java  
  8.     NotNull.java  
  9.     Table.java  
  10.     Transient.java  
  11.     Unique.java  
  12. com.lidroid.xutils.db.converter  
  13.     BooleanColumnConverter.java  
  14.     ByteArrayColumnConverter.java  
  15.     ByteColumnConverter.java  
  16.     CharColumnConverter.java  
  17.     ColumnConverter.java  
  18.     ColumnConverterFactory.java  
  19.     DateColumnConverter.java  
  20.     DoubleColumnConverter.java  
  21.     FloatColumnConverter.java  
  22.     IntegerColumnConverter.java  
  23.     LongColumnConverter.java  
  24.     ShortColumnConverter.java  
  25.     SqlDateColumnConverter.java  
  26.     StringColumnConverter.java  
  27. com.lidroid.xutils.db.sqlite  
  28.     ColumnDbType.java  
  29.     CursorUtils.java  
  30.     DbModelSelector.java  
  31.     FinderLazyLoader.java  
  32.     ForeignLazyLoader.java  
  33.     Selector.java  
  34.     SqlInfo.java  
  35.     SqlInfoBuilder.java  
  36.     WhereBuilder.java  
  37. com.lidroid.xutils.db.table  
  38.     Column.java  
  39.     ColumnUtils.java  
  40.     DbModel.java  
  41.     Finder.java  
  42.     Foreign.java  
  43.     Id.java  
  44.     KeyValue.java  
  45.     Table.java  
  46.     TableUtils.java  
原创粉丝点击