程序员人生 网站导航

Android xUtils框架(一)DbUtils

栏目:综合技术时间:2015-08-28 08:23:55


框架地址: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还有其他的1些构造方法,比如含有更新表版本的监听器的


创建表

  db.createTableIfNotExist(User.class); //创建1个表User

    db.save(user);//在表中保存1个user对象。最初履行保存动作时,也会创建User表


删除表

  db.dropTable(User.class); 


开启事务

  db.configAllowTransaction(true);


db相干Annotation

  @Check    check束缚
  @Column   列名
  @Finder   1对多、多对1、多对多关系(见sample的Parent、Child中的使用)
  @Foreign  外键
  @Id       主键,当为int类型时,默许自增。 非自增时,需要设置id的值
  @NoAutoIncrement  不自增
  @NotNull  不为空
  @Table    表名
  @Transient  不写入数据库表结构
  @Unique   唯1束缚


1些经常使用方法

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"时,最后1个参数必须是数组或Iterable的实现类(例如List等) Parent test = db.findFirst(Selector.from(Parent.class).where("id", "in", new int[]{1, 2, 3})); // op为"between"时,最后1个参数必须是数组或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)")); ... List<DbModel> dbModels = db.findDbModelAll(sql); // 自定义sql查询 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



------分隔线----------------------------
------分隔线----------------------------

最新技术推荐