美文网首页
GreenDao的配置和初步使用

GreenDao的配置和初步使用

作者: 红茶炒饭 | 来源:发表于2019-01-21 10:27 被阅读0次

    GreenDao

    数据库存储操作会耗时,大量的byte数据的存储会造成OOM 所以最好写在子线程中

    第一步

    首先我们需要在项目build.gradle中导入包

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

    第二步

    依赖

    implementation 'org.greenrobot:greendao:3.2.0'
    implementation 'org.greenrobot:greendao-generator:3.2.0'
    

    顶部声明

    apply plugin: 'org.greenrobot.greendao'
    
    注意标注

    这里注意一下!

    注意标注

    加入这些 代码
    这些 代码 如果没有 特殊的 需求 不用 加 不会影响这个程序! 这里注意

     greendao {
            schemaVersion 1
            daoPackage 'ash.com.greendao_20181212.greendao'//这个是生成代码保存的包名
            targetGenDir 'src/main/java'//保存到java代码路径
        }
    
    生成位置

    第三步

    随意建立,或者是按照你的需求 建立一个 bean类 用来存放数据库中的数据

    注解 作用
    @Entity 用于标识这是一个需要Greendao帮我们生成代码的bean
    @Id 标明主键,括号里可以指定是否自增
    @Property 用于设置属性在数据库中的列名(默认不写就是保持一致)
    @NotNull 非空
    @Transient 标识这个字段是自定义的不会创建到数据库表里
    @Unique 添加唯一约束
    ----
    ----
    @ToOne 将自己的一个属性与另一个表建立关联(外键)
    @ToMany referencedJoinProperty,类似于外键约束
    @JoinProperty 对于更复杂的关系,可以使用这个注解标明目标属性的源属性
    ----
               //数据表         名
    @Entity(nameInDb = "user")
    
    //规范命名  什么表 就是什么类 
    public class User {
            //上面介绍了
        @Id(autoincrement = true)
        private Long id;     //Long 大写! 注意!
    
        private String name;
        private String sex;
        private int age;
        private int salary;
    }
    

    然后接着点击 Build -> Make Project(快捷键ctrl+F9) , 将会自动为我们生成需要的类和代码
    你自动生成的 文件夹 下 会生成 一个 跟你 bean类 有关的 Dao 文件

    第四步

    在新建一个App类 继承 Application

    public class App extends Application {
    
              private DaoSession daoSession;
    
              @Override
              public void onCreate() {
                  super.onCreate();
    
                  DaoMaster.DevOpenHelper helper =
                                                                                            
                                 new  DaoMaster.DevOpenHelper(this, "数据库名字-db");
                                                        //参数1:上下文
                                                        //参数2:String 数据库名字! 
                  Database db =  helper.getWritableDb();
                  daoSession = new DaoMaster(db).newSession();
    
              }
    
              public DaoSession getDaoSession() {
                  return daoSession;
              }
    }
    
    生成位置

    有App 就一定 要 在清单文件中声明 !

    生成位置

    第五步

    public class MainActivity extends AppCompatActivity {
    
        private Query<User> userQuery;
        UserDao userDao;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            DaoSession daoSession =((App) getApplication()).getDaoSession();
            userDao = daoSession.getUserDao();
            userQuery = userDao.queryBuilder().orderAsc(UserDao.Properties.Id).build();
    
        
            insertUser();
            List<User> users = queryList();
            Toast.makeText(this, users.get(0).getName(), Toast.LENGTH_SHORT).show();
        }
    
    

    插入数据
    !!!--- ID(主键)必须是Long类型 而不是 long 类型 否则不会自增 l (L)

        private void insertUser(){                          
            User user = new User(1l,"ash", "男",26,50000);
            userDao.insert(user);
        }
    

    删除特定位置的数据 注意 ID 位置

        private void deleteUser(){
            userDao.deleteByKey(1l);
        }
    

    对位置 为position的的数据进行修改

        private void updateUser(){
            //查询id是1位置的数据
            User user = userDao.load(1l);
            //对其进行修改
            user.setName("~~");
            userDao.update(user);
    
        }
    

    查询全部的数据

     private List<User> queryList(){
         List<User> users = userQuery.list();
         return users;
     }
    

    按照属性name和sex来查询user

        private List<User> queryByName(String name,String sex){
            QueryBuilder<User> builder = userDao.queryBuilder();
            Query<User> query = builder
                    .where(UserDao.Properties.Name.eq(name),UserDao.Properties.Sex.eq(sex))
                    .build();
            List<User> list = query.list();
            return  list;
        }
    

    相关文章

      网友评论

          本文标题:GreenDao的配置和初步使用

          本文链接:https://www.haomeiwen.com/subject/pmwqjqtx.html