xUtils中用DbUtils,ViewUtils的用法

一、有关xUtils的简介

xUtils 包含了很多实用的android工具。
xUtils 最初源于Afinal框架,进行了大量重构,使得xUtils支持大文件上传,更全面的http请求协议支持(10种谓词),
拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响...
xUitls最低兼容android 2.2 (api level 8)

二、总共包含4个功能模块:

(1)DbUtils模块:
android中的orm框架,一行代码就可以进行增删改查;
支持事务,默认关闭;
可通过注解自定义表名,列名,外键,唯一性约束,NOT NULL约束,CHECK约束等(需要混淆的时候请注解表名和列名);
支持绑定外键,保存实体时外键关联实体自动保存或更新;
自动加载外键关联实体,支持延时加载;
支持链式表达查询,更直观的查询语义,参考下面的介绍或sample中的例子。

(2)ViewUtils模块
android中的ioc框架,完全注解方式就可以进行UI,资源和事件绑定;
新的事件绑定方式,使用混淆工具混淆后仍可正常工作;
目前支持常用的20种事件绑定,参见ViewCommonEventListener类和包com.lidroid.xutils.view.annotation.event。

(3)HttpUtils模块:

支持同步,异步方式的请求;
支持大文件上传,上传大文件不会oom;
支持GET,POST,PUT,MOVE,COPY,DELETE,HEAD,OPTIONS,TRACE,CONNECT请求;
下载支持301/302重定向,支持设置是否根据Content-Disposition重命名下载的文件;
返回文本内容的请求(默认只启用了GET请求)支持缓存,可设置默认过期时间和针对当前请求的过期时间。

(4)BitmapUtils模块:

加载bitmap的时候无需考虑bitmap加载过程中出现的oom和android容器快速滑动时候出现的图片错位等现象;
支持加载网络图片和本地图片;
内存管理使用lru算法,更好的管理bitmap内存;
可配置线程加载线程数量,缓存大小,缓存路径,加载显示动画等...

三、我目前使用的:

(1)ViewUtils

@ViewInject(R.id.id_name_input)
private EditText nameText;

在onCreate()方法添加:
ViewUtils.inject(this);

减少了很大一部分findViewById操作

(2)DbUtils操作

1)需要的权限
<uses-permissionandroid:name="android.permission.INTERNET"/>
<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

2)创建数据库
DaoConfig config = new DaoConfig(context);

//数据库的名字
config.setDbName("xUtils-demo"); 

//版本号
config.setDbVersion(1); 

//db还有其他的一些构造方法,比如含有更新表版本的监听器的
DbUtils db = DbUtils.create(config);

3)创建表

//创建一个表Student
db.createTableIfNotExist(Student.class); 

//在表中保存一个student对象。最初执行保存动作时,也会创建Student表
db.save(student);

4)删除表
db.dropTable(Student.class);
5)开启事务
db.configAllowTransaction(true);

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

(3)常见数据库操作

1)查询

DbUtils db = DbUtils.create(this);
List<Grade> stus = db.findAll(Selector.from(Grade.class).where("class_name", "=", ""));
List<Student>list = db.findAll(Selector.from(Student.class)
.where("id","<", 34)
.and(WhereBuilder.b("age",">", 15).or("age", " < ", 20))
.orderBy("id")
.limit(pageSize)
.offset(pageSize* pageIndex));

Studenttest = db.findFirst(Selector.from(Student.class).where("id","in", new int[]{1, 2, 3}));
Studenttest = db.findFirst(Selector.from(Student.class).where("id","between", new String[]{"2", "5"}));
DbModeldbModel =db.findDbModelAll(Selector.from(Student.class).select("name"));//select("name")只取出name列
List<DbModel>dbModels =db.findDbModelAll(Selector.from(Student.class).groupBy("name").select("name","count(name)"));

2)自定义查询(常用到的链接查询可以这样写)

SqlInfo sqlInfo = new SqlInfo();
sqlInfo.setSql("select * from tbl_Student a,tbl_class b where a.stu_class_id = b.id and a.id > ?");
sqlInfo.addBindArg(2);
List<DbModel> StudentByInfo = db.findDbModelAll(sqlInfo);

3)删除,包含三种方法:删除list集合,根据Id删除,删除一个对象

List<Grade> stus = db.findAll(Selector.from(Grade.class).where("class_name", "=", ""));
db.deleteAll(stus);

 db.deleteById(Grade.class, 2);

 db.delete(stus.get(3));

4更新操作和删除操作类似,这里就一一列举

四、有关xUtils

开源项目地址以及作者:https://github.com/wyouflf/xUtils

xUtils api地址
http://xutilsapi.oschina.mopaas.com/

 

posted @ 2015-05-12 18:20  学会坚持  阅读(2869)  评论(0编辑  收藏  举报