xUtils框架之DbUtils

xiaoxiao2021-02-28  64

框架地址: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 ? 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[]{123}));   // 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相关类库结构:

[plain]  view plain  copy  print ? 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  
转载请注明原文地址: https://www.6miu.com/read-36777.html

最新回复(0)