XUtils3.0学习心得
DB注释相关
Studio 导入
compile 'org.xutils:xutils:3.3.32'
1.加注了@Table的实体类将被映射到sqlite中的数据库表,@Table注解有属性name和onCreated两个属性,name属性决定了该实体类映射的数据库表名,而onCreated属性则可以用来添加表一级的属性或约束,例如创建联和唯一索引等
2.加注了@Column的实体类属性将会映射到sqlite数据库中的字段,@Column注解有name、property、isId、autoGen属性,name属性决定了实体类属性对应的数据库字段名;property属性可以用来添加数据库中字段一级的属性或约束条件例如not null,索引等;isId属性表示该字段是否是主键,默认为false;autoGen则表示如果一个字段为主键,是否自增长,默认为true,所以该字段只有在isId属性为true时有效.
3.未加注@Column注解的字段将不映射sqlite字段
通过XUti.getDaoConfig()方法,我们能够获取到一个DaoConfig对象。通过getDaoConfig()方法,我们可以知道这个方法主要可以做以下事情:
1.setDbName 设置数据库的名称
2.setDbDir 设置数据库存放的路径
3.setDbVersion 设置数据库的版本
4.setAllowTransaction(true) 设置允许开启事务
5.setDbUpgradeListener 设置一个版本升级的监听方法
那么具体我们什么时候创建的表呢?如果我们单纯的调用XUti.getDaoConfig()方法是不能够创建PersonTable这个实体对应的person这张表的,那么如何创建表呢?
只需要一下几步:
1.DaoConfig daoConfig=XUtil.getDaoConfig();
2.DbManager db = x.getDb(daoConfig);
3.只有在对表进行操作时,如果没有表则创建,有表则直接引用。
DbManager.DaoConfig daoConfig=new DbManager.DaoConfig() .setDbName("my.db") .setDbVersion(1) .setDbUpgradeListener(new DbManager.DbUpgradeListener() { @Override public void onUpgrade(DbManager db, int oldVersion, int newVersion) { } }) .setDbOpenListener(new DbManager.DbOpenListener() { @Override public void onDbOpened(DbManager db) { db.getDatabase().enableWriteAheadLogging(); } }) .setDbDir(new File("/sdcard/download/"