学习
关于表的创建请参考该文章:
https://blog.csdn.net/industriously/article/details/50756294
https://www.jianshu.com/p/a8a6429ac772
关于自定义查询等查看这个
https://blog.csdn.net/zffenger/article/details/53020281
创建实体
@DatabaseTable
public class Student {
@DatabaseField
private int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@DatabaseField
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
创建Service
public class StudentService {
private BaseDao<Student,Integer> studentDao;//数据库操作对象
public StudentDao(Context context){
studentDao = new BaseDaoImpl<>(context,Student.class);
}
public int add(Student s){
try {
return studentDao.save(s);
} catch (SQLException e) {
e.printStackTrace();
return 0;
}
}
}
数据库升级监听及实现
public class MyApplication extends XBaseApplication {
@Override
public void onCreate() {
super.onCreate();
DatabaseHelper databaseHelper = DatabaseHelper.getInstance(this);
databaseHelper.addTable(User.class);//必须加载所有表
databaseHelper.setVersionChangeListener(new DatabaseVersionChangeListener() {
@Override
public void onChange(int oldVersion, int newVersion) {
ToastUtils.showLong("数据库版本发生变化:" + oldVersion + " > " + newVersion);
/**
* 这里的i即当前版本。比如你想从1升级到2 2版本会新增一个字段。那么你就在case 1:里面写新增字段的逻辑代码
*/
for (int i = oldVersion; i < newVersion; i++) {
switch (i) {
case 1:
//新增了sex字段
databaseHelper.addColumn(User.class,"sex","varchar","未知");
LogUtils.d("MyApplication","字段添加成功");
break;
case 2:
//删除了字段sex
//吧需要保留的字段放到List中 不是实体类的字段名
List<String> list = new ArrayList<>();
list.add("user_id");
list.add("name");
databaseHelper.delColumn(User.class,list);
LogUtils.d("MyApplication","字段删除成功");
break;
}
}
}
});
}
}
PreparedQuery对象的使用
QueryBuilder builder = this.faceDao.getDao().queryBuilder();
builder.where().eq("save_status", faceStatus);
PreparedQuery preparedQuery = builder.prepare();
faceDao.count(preparedQuery);