安卓快速开发框架(十三)XBaseAndroid本地使用SQLite数据库操作

学习

关于表的创建请参考该文章:

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);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容