Android高级之xUtils框架(四):DBUtils的用法

来源:互联网 发布:手机手柄连接软件 编辑:程序博客网 时间:2024/06/10 07:32

DBUtils用于数据库的创建,管理和操作。

    DBUtils的基本思想:把类映射成了一张表,把属性映射成了一个字段,把对象映射成了一条数据,这些都是通过反射去完成的。

一.DBUtils的初始化:

DBUtils和BitmapUtils道理相同,由于一个项目中只会存在一个数据库,所以也要设计为单例模式,因此定义一个帮助类,并且在整个看项目运行之前对他初始化,也就是在Application中,主要代码代码如下:

1.1.帮助类:设计单例模式

public class DBHelper {
    private static DbUtils utils;
    /*初始化DBuitls的方法,在Application中初始化*/
    public static void init(Context context){

        utils = DbUtils.create(context);
//        开启事物,这样可以提高效率,因为每次执行语句都有一个开启事务和关闭事务
        utils.configAllowTransaction(true);
//        设为true的时候,可以在LogCat中看到所执行的语句信息
        utils.configDebug(true);

    }
    public static DbUtils getUtils(){
        return utils;
    }
}

1.2.初始化:在BaseApplicaiton的onCreate()中:


public class BaseApplication extends Application{
    @Override
    public void onCreate() {
        super.onCreate();
        DBHelper.init(this);
    }
}

1.3.在MainActivity中得到DBUtils对象:

            utils = DBHelper.getUtils();

二。实体类

在DBUtils中,必须要有实体类,并且实体类中必须有无参构造,这是因为DBUtils的需求,而在定义实体类时,需要有注解,注解的作用就是在项目完成后混淆的时候用到,如果没有注解,则混淆时会报错,通过注解可以对DBUtils进行规定,代码如下:

//指定表明,可以为空,默认是包名.类名.实体类
@Table(name = "Entities",execAfterTableCreated = "")
public class Entities {
//    指定主键,则id不再默认是主键了
@Id(column="key")

    private int id;
    @Column(column = "name")
    @NotNull
    private String name;
//这里必须要有一个无参构造函数,DBUtils需要
    public Entities() {
    }
    public Entities(int id, String name) {
        this.id = id;
        this.name = name;
    }


    public int getId() {
        return id;
    }


    public String getName() {
        return name;
    }


    public void setId(int id) {
        this.id = id;
    }


    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Entities{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}

三。以上工作完成后,就可以进行CRUD操作了

3.1.添加数据:

  3.1.1.插入一条信息,当实体类中有id或者_id时,会默认为主键
            utils.save(new Entities(id,name));

  3.1. 2.插入一个实体类集合

   Utils.saveAll(List<Entities>);

3.2.修改数据:

 3.2.1.会根据id判断是否存在,如存在就不会保存,若不存在就会添加

Utils.saveOrUpdate(Entities);

 3.2.2.整个实体类集合

Utils.saveOrUpdateAll(List<Entities>)

3.3.查询数据:

 3.3.1. 查询所有的数据,返回值为List<T>

  try {
            List<Entities> all = utils.findAll(Entities.class);
        } catch (DbException e) {
            e.printStackTrace();
        }

 3.3.2条件查询
/*      
* 1参:字段名
* 2参:操作符(<,>,=,like)
* 3参:查询的值

*/
        WhereBuilder builder = WhereBuilder.b("name", "like", "张三");
        Selector selector = Selector.from(Entities.class);

        try {
            List<Object> all = utils.findAll(selector);
            Log.i("TAG",all.toString());
        } catch (DbException e) {
            e.printStackTrace();
        }

3.4 删除数据:

 3.4.1. 删除表及表中所有数据 

utils.deleteAll(Entities.class);

 3.4.2. 删除表中id=1的数据(一行)

utils.delete(new Entities(1,"张三"));

 3.4.3. 按指定条件删除

WhereBuilder builder = WhereBuilder.b("name", "like", "李四");
            utils.delete(Entities.class,builder);

还有几个重载方法,可根据提示掌握,这里就不一一说了。

以上,就是DBUilts主要用法和大部分知识点了,对DBUtils的这种思想需要加以理解。

0 0
原创粉丝点击