框架地址: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 NULLParent Parent = db.findFirst(Selector.from(Parent.class).where("name","=", null));// IS NOT NULLParent 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 pageOffsetList<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.annotationCheck.javaColumn.javaFinder.javaForeign.javaId.javaNoAutoIncrement.javaNotNull.javaTable.javaTransient.javaUnique.javacom.lidroid.xutils.db.converterBooleanColumnConverter.javaByteArrayColumnConverter.javaByteColumnConverter.javaCharColumnConverter.javaColumnConverter.javaColumnConverterFactory.javaDateColumnConverter.javaDoubleColumnConverter.javaFloatColumnConverter.javaIntegerColumnConverter.javaLongColumnConverter.javaShortColumnConverter.javaSqlDateColumnConverter.javaStringColumnConverter.javacom.lidroid.xutils.db.sqliteColumnDbType.javaCursorUtils.javaDbModelSelector.javaFinderLazyLoader.javaForeignLazyLoader.javaSelector.javaSqlInfo.javaSqlInfoBuilder.javaWhereBuilder.javacom.lidroid.xutils.db.tableColumn.javaColumnUtils.javaDbModel.javaFinder.javaForeign.javaId.javaKeyValue.javaTable.javaTableUtils.java



更多相关文章

  1. Android动画学习笔记-Android(安卓)Animation
  2. Android中的Animation使用
  3. 《android 利用自带技术解析json字符》
  4. Android(安卓)- 时间 日期相关组件
  5. Android(安卓)ListView控件使用
  6. Android(安卓)ZXing改横屏识别为竖屏识别[转]
  7. 我的Android进阶之旅------>Android中android:visibility 属性VI
  8. android:scrollbars属性和弹出键盘的问题
  9. android:duplicateParentState属性解释

随机推荐

  1. Android系统篇之----Android中的智能指针
  2. android Spinner控件详解
  3. Android为什么卡顿系统原理分析
  4. Android(安卓)TTS学习——总结
  5. Android中实现并发性联网和数据访问
  6. intent.putExtra()方法参数详解
  7. AS(Android(安卓)Studio)开发开源Android库
  8. Android(安卓)自定义View实现打钩(签到)
  9. Android活动一探究竟
  10. android 窗口管理框架解析