xUtils3.0使用介绍:数据库模块

步骤:
1. 创建数据表
2. DaoConfig 获取数据库的配置信息
3. 获取数据库实例: x.getDb(daoConfig);
4. 数据库的增删改查

第一步,创建一张数据表

在这里要强调的是,数据库里面表的创建的时间,只有在你对数据库里面的操作涉及到这张表的操作时,会先判断当前的表是否存在,如果不存在,才会创建一张表,如果存在,才会进行相应的CRUD操作。

@Table(name = "person")
public class person {
    @Column(name = "id", isId = true, autoGen = true)
    public int id;

    @Column(name = "name")
    public String name;// 姓名

    @Column(name = "age")
    public int age;// 年龄

    @Column(name = "sex")
    public String sex;// 性别

    @Column(name = "salary")
    public String salary;// 工资

    @Override
    public String toString() {
        return "person [id=" + id + ", name=" + name + ", age=" + age
                + ", sex=" + sex + ", salary=" + salary + "]";
    }

}

上表中包含了db相关Annotation:

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

第二步:DaoConfig 获取数据库的配置信息

这个配置最好写在工具类中,方便调用:

private static DaoConfig daoConfig;
    public static DaoConfig getDaoConfig(){
        if(daoConfig==null){
            daoConfig = new DbManager.DaoConfig()
            .setAllowTransaction(true)//设置允许开启事务
             .setDbName("test.db")//创建数据库的名称
             // 不设置dbDir时, 默认存储在app的私有目录.
             .setDbDir(new File("/sdcard")) // "sdcard"的写法并非最佳实践, 这里为了简单, 先这样写了.
             .setDbVersion(1)//数据库版本号
             .setDbOpenListener(new DbManager.DbOpenListener() {
                 @Override
                 public void onDbOpened(DbManager db) {
                     // 开启WAL, 对写入加速提升巨大
                     db.getDatabase().enableWriteAheadLogging();
                 }
             })
             .setDbUpgradeListener(new DbManager.DbUpgradeListener() {
                 @Override
                 public void onUpgrade(DbManager db, int oldVersion, int newVersion) {
                     // TODO: ...
                     //db.addColumn(...);
                     // db.dropTable(...);
                     // ...
                     // or
                     // db.dropDb();
                 }
             });
        }
        return daoConfig;
    }

第三步:获取数据库实例

DaoConfig daoConfig = xUtils.getDaoConfig();
db = x.getDb(daoConfig);

第四部步:数据库的增删改查

通过DbManager这个类我们知道主要它做了以下几件事情:

  1. .getDaoConfig 获取数据库的配置信息
  2. getDatabase 获取数据库实例
  3. saveBindingId ;saveOrUpdate ; save 插入数据的3个方法(保存数据)
  4. replace 只有存在唯一索引时才有用 慎重
  5. .delete操作的4种方法(删除数据)
  6. update操作的2种方法(修改数据)
  7. find操作6种方法(查询数据)
  8. dropTable 删除表
  9. addColumn 添加一列
  10. dropDb 删除数据库

增:

try {
            List<person> list = new ArrayList<person>();
            for (int i = 0; i < 1; i++) {
                person person = new person();
                person.name = "wingli"+i;
                person.age = 18;
                person.salary = "1000元";
                person.sex = "男";
                list.add(person);
            }
            db.save(list);//保存实体类或实体类的List到数据库
// db.saveOrUpdate(list);//保存或更新实体类或实体类的List到数据库, 根据id对应的数据是否存在
// db.saveBindingId(list);保存实体类或实体类的List到数据库,如果该类型的id是自动生成的, 则保存完后会给id赋值
        } catch (DbException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

查:

try {
            //1
            db.findById(person.class, 1);//通过主键的值来进行查找表里面的数据
            //2
            db.findFirst(person.class);//返回当前表里面的第一条数据 
            //3
            List<person> findAll = db.findAll(person.class);//返回当前表里面的所有数据 
            //4
// db.findDbModelAll(new SqlInfo("select * from person where age > 25"));
            DbModel model = db.findDbModelFirst(new SqlInfo("select * from person where age > 25"));
            model.getString("age");//model相当于游标
            //5
             List<person> findAll2 = db.selector(person.class).expr("age >10").findAll();//主要是用来进行一些特定条件的查找 

        } catch (DbException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

try {
            //1
            db.delete(person.class);//该方法是删除表中的全部数据
            //2
            db.deleteById(person.class, 12);//该方法主要是根据表的主键(id)进行单条记录的删除
            //3
            db.delete(person.class, WhereBuilder.b("age", ">","20"));//根据where语句的条件进行删除操作 
            //4
            List<person> findAll = db.selector(person.class).expr("age > 20").findAll();
            db.delete(findAll);//根据实体bean进行对表里面的一条或多条数据进行删除 
        } catch (DbException e) {
            e.printStackTrace();
        }

改:

try {
            List<Person> findAll = db.findAll(Person.class);
            for (Person person : findAll) {
                person.age = 1;
                person.salary = "qqqqq";
            }
            db.update(findAll, "age");//可以使对象、集合
        } catch (DbException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

添加一个字段:

通常用在数据库升级

db.addColumn(Person.class, "count");

你可能感兴趣的:(数据库,xutils)