zoukankan      html  css  js  c++  java
  • GreenDao的初次使用--号称Android最快的关系型数据库

    一、准备工作

    1、项目build.gradle文件下的dependencies中引入插件:

    classpath 'org.greenrobot:greendao-gradle-plugin:3.2.1'

    2、在module的build.gradle文件下顶部依赖插件:

    apply plugin: 'org.greenrobot.greendao'

    3、在module的build.gradle文件下的dependencies中引入依赖:

    compile 'org.greenrobot:greendao:3.2.0'

    二、GreenDao的注解

    1、实体@Entity注解:

      schema:告知GreenDao当前实体属于哪个schema

      active:标记一个实体处于活动状态,活动实体有更新、删除和刷新方法

      nameInDb:在数据中使用的别名,默认使用的是实体的类名

      indexes:定义索引,可以跨越多个列

      createInDb:标记创建数据库表

    2、基础属性注解

      @Id :主键 Long型,可以通过@Id(autoincrement = true)设置自增长

      @Property:设置一个非默认关系映射所对应的列名,默认是的使用字段名 举例:@Property (nameInDb="name")

      @NotNul:设置数据库表当前列不能为空

      @Transient :添加次标记之后不会生成数据库表的列

    3、索引注解

      @Index:使用@Index作为一个属性来创建一个索引,通过name设置索引别名,也可以通过unique给索引添加约束

      @Unique:向数据库列添加了一个唯一的约束

    4、关系注解

      @ToOne:定义与另一个实体(一个实体对象)的关系

      @ToMany:定义与多个实体对象的关系

    三、简单使用----使用管理类DBManager,操作名称为test_db的数据库,完成数据库中用户实体类User的增删改查等操作

    1、创建实体用户类User,使用GreenDao进行注解,ReBuild项目。

    /**
     * <p>Description:
     */
    @Entity
    public class User {
    
        @Id(autoincrement = true)
        private Long id ;
        private String name ;
        private int age ;
    
        public User(String name,int age){
            this.name = name ;
            this.age = age ;
        }
    
    
        @Generated(hash = 1309193360)
        public User(Long id, String name, int age) {
            this.id = id;
            this.name = name;
            this.age = age;
        }
        @Generated(hash = 586692638)
        public User() {
        }
        public Long getId() {
            return this.id;
        }
        public void setId(Long id) {
            this.id = id;
        }
        public String getName() {
            return this.name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getAge() {
            return this.age;
        }
        public void setAge(int age) {
            this.age = age;
        }
    }
    View Code

    2、创建管理类DBManager,完成对User的增删改查方法

    public class DBManager {
    
        private static DBManager instance ;
        private final static String dbName = "test_db";
    
        private Context mContext ;
    
        private DBManager(Context context){
            this.mContext = context ;
            openHelper = new DaoMaster.DevOpenHelper(context,dbName);
        }
    
    
        private DaoMaster.DevOpenHelper openHelper = null ;
    
        public static DBManager getInstance(Context context){
            if(instance == null){
                synchronized (DBManager.class){
                    if(instance == null){
                        instance = new DBManager(context);
                    }
                }
            }
            return instance ;
        }
    
        private SQLiteDatabase getWriteableDatabase(){
            if(openHelper == null){
                openHelper = new DaoMaster.DevOpenHelper(mContext,dbName);
            }
            return openHelper.getWritableDatabase();
        }
        private SQLiteDatabase getRedadableDatabase(){
            if(openHelper == null){
                openHelper = new DaoMaster.DevOpenHelper(mContext,dbName);
            }
            return openHelper.getReadableDatabase() ;
        }
    
    
        public void saveUser(User user){
            DaoMaster daoMaster = new DaoMaster(getWriteableDatabase());
            DaoSession daoSession = daoMaster.newSession();
            UserDao userDao = daoSession.getUserDao();
            //存入user对象
            userDao.save(user);
    
        }
    
        public void saveUsers(List<User> users){
            DaoMaster daoMaster = new DaoMaster(getWriteableDatabase());
            DaoSession daoSession = daoMaster.newSession();
            UserDao userDao = daoSession.getUserDao();
            userDao.saveInTx(users);
        }
    
        public void delteUser(User user){
            DaoMaster daoMaster = new DaoMaster(getWriteableDatabase());
            DaoSession daoSession = daoMaster.newSession();
            UserDao userDao = daoSession.getUserDao();
            userDao.delete(user);
        }
    
        public void updateUser(User user){
            DaoMaster daoMaster = new DaoMaster(getWriteableDatabase());
            DaoSession daoSession = daoMaster.newSession();
            UserDao userDao = daoSession.getUserDao();
            userDao.update(user);
        }
    
        public List<User> queryUser(){
            DaoMaster daoMaster = new DaoMaster(getRedadableDatabase());
            DaoSession daoSession = daoMaster.newSession();
            UserDao userDao = daoSession.getUserDao();
            QueryBuilder<User> qb = userDao.queryBuilder();
            List<User> list = qb.list();
            return list ;
        }
    
        public List<User> queryUser(int age){
            DaoMaster daoMaster = new DaoMaster(getRedadableDatabase());
            DaoSession daoSession = daoMaster.newSession();
            UserDao userDao = daoSession.getUserDao();
            QueryBuilder<User> qb = userDao.queryBuilder();
            //添加查询条件
            qb.where(UserDao.Properties.Age.eq(age));
            List<User> list = qb.list();
            return list ;
        }
    
    }
    View Code
  • 相关阅读:
    数据库性能优化摘录
    关于海量用户访问的通用技术架构的一些思考
    Rose建模示例
    ASP.NET2.0下实现分布式StateServer(状态服务器)
    Apache + Tomcat 实现简单集群
    StateServer 解决 Session过期和分布式保存Session
    ASP.NET动态修改浏览器title,keywords,descrtptions,csslink,meta,icon等
    用户登录体验(自动时间锁)
    百度ueditor一些使用技巧
    C# AJAX中弹出提示窗口
  • 原文地址:https://www.cnblogs.com/happy-warmth/p/10507925.html
Copyright © 2011-2022 走看看