ECM
ECM
总版主
总版主
  • 社区居民
  • 忠实会员
  • 原创写手
阅读:1930回复:0

xUtils中用DbUtils,ViewUtils的用法

楼主#
更多 发布于:2015-12-31 16:54
一、有关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/

 

 

 

 

 

 

 

异常中心网是一家专门收集整理程序员编程过程中遇到的常见异常(exception)以及各种异常问答中心的网站。异常中心网旨在,减少程序员在编码遇到异常,处理各种异常时间和痛苦,让程序员能更愉快的、快速的定位异常并查找对应的异常解决方案。异常中心网诚心打造最完美的编程社区为程序员用户服务,努力成为最好的程序员乐园程序员社区程序异常中心程序bug中心异常问答中心

 

喜欢0 评分0
游客

返回顶部