zoukankan      html  css  js  c++  java
  • 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/

    转载请注明来源于

    作者: persist
    出处: http://www.cnblogs.com/persist-confident/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    54.Spiral Matrix
    53.Maximum Subarray
    基础数据类型包装类
    sqlacodegen逆向数据库
    第四章、常用模块
    第三章、函数编程
    第一章
    第一章 Python基础
    Centos7.0升级python 2.x到3.x
    time
  • 原文地址:https://www.cnblogs.com/persist-confident/p/4495303.html
Copyright © 2011-2022 走看看