zoukankan      html  css  js  c++  java
  • Android xUtils3.0使用手册(二)

    步骤: 

    (1). 创建数据表;

    (2). DaoConfig 获取数据库的配置信息;

    (3).  获取数据库实例:  x.getDb(daoConfig);  

    (4). 数据库的增删改查。

    1. 创建数据表

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

     1 @Table(name = "person") 
     2 public class person {
     3     @Column(name = "ID", isId = true, autoGen = true)
     4     public int id;
     5     @Column(name = "NAME")
     6     public String name; // 姓名
     7     @Column(name = "AGE")
     8     public int age; // 年龄
     9     @Column(name = "SEX")
    10     public String sex; // 性别
    11
    12 @Override
    13 public String toString() { 14 return "person [id=" + id + ", name=" + name + ", age=" + age + ", sex=" + sex + "]"; 15 }
    16 }

    上表中包含了db相关注解:

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

    注解属性

    name (String)       :  表名称    
    isId (boolean)      :  是否为主键
    autoGen (boolean)   :  是否自增(默认: false)
    proprety (String)   :  是否为空(默认: NOT NULL) 

    2. DaoConfig 获取数据库的配置信息

     1 //本地数据的初始化
     2 DbManager.DaoConfig daoConfig = new DbManager.DaoConfig()
     3         .setDbName("my_db.db") //设置数据库名
     4         .setDbVersion(1) //设置数据库版本,每次启动应用时将会检查该版本号,
     5         // 发现数据库版本低于这里设置的值将进行数据库升级并触发DbUpgradeListener
     6         .setAllowTransaction(true) //设置是否开启事务,默认为false关闭事务
     7         .setTableCreateListener(new DbManager.TableCreateListener() {
     8                 @Override
     9                 public void onTableCreated(DbManager dbManager, TableEntity<?> tableEntity) {
    10                 }
    11         })
    12         .setDbOpenListener(new DbManager.DbOpenListener() {
    13                 @Override
    14                 public void onDbOpened(DbManager db) {
    15                     // 开启WAL, 对写入加速提升巨大
    16                     db.getDatabase().enableWriteAheadLogging();
    17                 }
    18         })
    19         // 设置数据库创建时的Listener
    20         .setDbUpgradeListener(new DbManager.DbUpgradeListener() {
    21                 @Override
    22                 public void onUpgrade(DbManager db, int oldVersion, int newVersion) {
    23                     // TODO: ...
    24                     // db.addColumn(...);
    25                     // db.dropTable(...);
    26                     // ...
    27                     // or
    28                     // db.dropDb();
    29                 }
    30         }); //设置数据库升级时的Listener,这里可以执行相关数据库表的相关修改,比如alter语句增加字段等
    31         // .setDbDir(null);//设置数据库.db文件存放的目录,默认为包名下databases目录下
    32             
    33 DBManager db = x.getDb(daoConfig);

    3. 获取数据库实例

    DbManager db = x.getDb(daoConfig);

    4. 表 操作

    通过DbManager这类我们可以做如下操作:

    .getDaoConfig  // 获取数据库的配置信息
    .getDatabase   // 获取数据库实例  
    .replace       // 只有存在唯一索引时才有用 (慎重)
    .dropTable     // 删除表 
    .addColumn     // 添加一列 
    .dropDb        // 删除数据库


    5. 增 操作

    1 try {
    2     List<person> list = new ArrayList<person>();
    3     // ... 加载数据
    4 
    5     db.save(list); // 保存实体类或者实体类的List到数据库
    6     db.saveOrUpdate(list); // 保存或更新实体类或者实体类的List到数据库,根据id对应的数据是否存在
    7     db.saveBindingId(list); // 保存实体类或实体类的List到数据库,如果该类型的id是自动生成的,则保存完后会给id赋值
    8 } catch (DbException e) {
    9 }

    6. 删 操作

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

    7. 改 操作

     1 // 第一种
     2 try {
     3     List<Person> findAll = db.findAll(Person.class);
     4     for (Person person : findAll) {
     5         person.setAge(10);
     6     }
     7     db.update(findAll, "age"); //可以使对象、集合
     8 } catch (DbException e) {
     9 }
    10 // 第二种
    11 try {
    12     PersonTable person = db.findById(Person.class, 1);
    13     person.setAge(25);
    14     db.update(person, "age");
    15 } catch(DbException e){
    16 }

    8. 查 操作

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

    9. 相关资料

     Android xUtils3.0使用手册(一)- 基础功能使用

  • 相关阅读:
    mysql 5.7.3.0-m13安装教程
    angular的$http.post()提交数据到Java后台接收不到参数值问题的解决方法
    samentic 在IE9 不支持 transition 的解决方案
    Html
    html
    ng-style 的坑
    js 和 jq 控制 checkbox
    highchart访问一次后台服务返回多张图表数据
    highchart 动态刷新(可用于制作股票时时走势)
    c# 实现 java 的 System.currentTimeMillis() 值
  • 原文地址:https://www.cnblogs.com/steffen/p/5986953.html
Copyright © 2011-2022 走看看