框架地址: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.setEmail("wyouflf@qq.com");
- user.setName("wyouflf");
- db.save(user);
-
- ...
-
- 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"));
-
-
- Parent Parent = db.findFirst(Selector.from(Parent.class).where("name","=", null));
-
- Parent Parent = db.findFirst(Selector.from(Parent.class).where("name","!=", null));
-
-
- 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));
-
-
- Parent test = db.findFirst(Selector.from(Parent.class).where("id", "in", new int[]{1, 2, 3}));
-
- 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"));
- List<DbModel> dbModels = db.findDbModelAll(Selector.from(Parent.class).groupBy("name").select("name", "count(name)"));
- ...
-
- List<DbModel> dbModels = db.findDbModelAll(Selector.form(Parent.class).select("distinct name,count(name) as num").groupBy("name"));
- db.execNonQuery("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