最近公司里的项目改版,把原有的xutils2升级成了xutils3,然后就发现了一系列问题,原有的方法全部报错。
1. 版本3没有了原本的db.tableIsExist()、db.createTableIfNotExist()等方法。
2. 版本3需要在application里进行如下初始化:
//数据库初始化
x.Ext.init(this);
x.Ext.setDebug(BuildConfig.DEBUG); // 是否输出debug日志, 开启debug会影响性能.
3. 版本3的注解方式和原来也有所不同,首先,没有了@Transient这个注解;其次,如果bean方法里有带参数的构造函数,必须把不带参数的构造函数也写上,否则会导致表初始化创建失败。
4. 数据库的搜索方式和原来也有所不同,例如:
//版本2的搜索方式
DbUtils db = DbUtil.getDb(context);
list = db.findAll(Selector.from(ProductInfo.class).where(whereBuilder).orderBy("tId", false));
//版本3的搜索方式
DbManager db = DbUtil.getDb(context);
list = db.selector(ProductInfo.class).where(whereBuilder).orderBy("tId", false).findAll();
数据库表创建失败可能的原因:
1. 数据库没有在application里初始化。
2. 没有写注解,新版本和老版本最大的不同点就是,新版本需要对每个在表里存在的字段加注解,而老版本主需要对不用加入表的字段加注解。
3. 没有主键注解,新版本需要对主键进行设置,而不像老版本会默认id为主键。